Effectivity Business Link Satellite
Applies to
Platform: Microsoft SQL Server · Snowflake · Snowflake dbt · Databricks · Databricks dbt · Fabric Lakehouse · Fabric Warehouse · Oracle
Architecture: Data Vault
An Effectivity Business Link Satellite stores the effectivity begin and end of Link or Business Link rows, read from the Raw Vault, with their history. Use it when a business rule takes or derives the periods in which relationships are in effect, for example the period in which a loyalty card belongs to a customer. After each load, the result view shows every version of these dates with its technical validity.
An Effectivity Business Link Satellite works like an Effectivity Link Satellite, not like a Business Link Satellite. It differs from the Raw Vault type in its sources, its layer, its relationship targets and the BDV_ prefix of its objects.
Sources and relationships
An Effectivity Business Link Satellite reads the result views of Raw Vault objects, in one or more dataflows: Hubs, all Link types, all satellite types, Current Views and History Views. It also reads BusinessVault Composites. It has exactly one relationship to a Link or Business Link. Its foreign-key terms are the business keys of the Link's Hubs, and they must be mapped. Instead of descriptive terms it carries the Default Terms BG_Effectivity_Begin and BG_Effectivity_End. Business Current View, Business History View and Vault Out can read it.
Create the model object
- With the wizard: open the menu of a Raw Vault Hub, Link or satellite, or of a BusinessVault Composite. Choose Automate and then Create Effectivity Business Link Satellite. Its steps are Create Model Object, Create Dataflow, Create Relations, Map Foreign Key Terms and Add to View. See Create a Model Object with the wizard.
- Manually: create a model object of type Effectivity Business Link Satellite in the Business Vault layer, add a relationship to the Link or Business Link, create a dataflow set, add the source model object and map the foreign-key terms.
After either way, map BG_Effectivity_Begin to the source term with the start date, and BG_Effectivity_End to the source term with the end date.
Historization
The row hash BG_RowHash covers BG_Effectivity_Begin and BG_Effectivity_End. The loader inserts a new version of a Link row when its row hash differs from the current version. The new version starts at the load timestamp, and the previous version ends there. An unchanged row adds no version, and the loader never deletes or updates rows.
Calculate Effectivity End From Begin decides which BG_Effectivity_End the result view shows when BG_Effectivity_End is mapped:
false(default): the end that the source delivered.true: theBG_Effectivity_Beginof the next row of the sameLink_HK, ordered byBG_Effectivity_Begin, and End of Universe for the last row. Validation reports warning ID-20004, because the mapped end is overwritten in the result view. See BG_Effectivity_End.
Properties
- Calculate Effectivity End From Begin:
false(default) ortrue, see Historization. - 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. - Excluded from Delta Detection: terms that are stored but do not start a new version.
- Deduplication Method and Sort Order within Partition, per dataflow.
- Use Embryo Loader, on the relationship: inserts the Link keys that the Link or Business Link does not hold yet.
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: a Default Term of the type. On a Link or Business Link, the table has no such column.BG_Effectivity_BeginandBG_Effectivity_End: the begin and end of the effectivity.BG_ValidFromTimestamp: start of the version. WithLink_HKit forms the primary key.BG_ValidToTimestamp: end of the version.BG_RowHash: hash of the effectivity terms, compared with the current version.BG_LoadTimestampandBG_SourceSystem: the load that inserted the row and its source system, empty unless you map it.BG_IncrementalFilter: source term for an incremental load; not stored in the table.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 Effectivity Business Link Satellite load_incremental_belsat with one dataflow:
| Role | Generated name | Purpose |
|---|---|---|
| IncrementSource | BDV_ELSAT_load_incremental_belsat_IncrementSource | Finds the new increment |
| Increment | BDV_ELSAT_load_incremental_belsat_Increment | Stores the increments |
| Source | BDV_ELSAT_load_incremental_belsat_Source | Reads the sources |
| Deduplication | BDV_ELSAT_load_incremental_belsat_Deduplication | Removes duplicate rows |
| Hashing | BDV_ELSAT_load_incremental_belsat_Hashing | Calculates the hash keys |
| HashingStorage | BDV_ELSAT_load_incremental_belsat_HashingTable | Stores the hashed rows |
| HashingLoader | BDV_ELSAT_load_incremental_belsat_HashingLoader | Fills the hashing table |
| EmbryoLoader | BDV_ELSAT_load_incremental_belsat_EmbryoLoader | Adds missing Link keys |
| Delta | BDV_ELSAT_load_incremental_belsat_Delta | Selects new versions |
| Loader | BDV_ELSAT_load_incremental_belsat_Loader | Inserts the new versions |
| Storage | BDV_ELSAT_load_incremental_belsat | Effectivity Business Link Satellite table |
| Result | BDV_ELSAT_load_incremental_belsat_Result | Query view with validity |
- Loaders are stored procedures; the satellite table, the hashing table and the increment table are tables; all other objects are views.
- 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 deduplication view exists only with a Deduplication Method other than
None. - The hashing table and hashing loader exist only with Load Caching
Hashing. - 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 has no unknown-member row.
The example object loads incrementally, so a load runs this chain:
_IncrementSource -> _Loader -> _Increment (new increment) Raw Vault _Result views + _Increment -> _Source -> _Hashing _Hashing -> _Delta -> _Loader -> BDV_ELSAT_load_incremental_belsat BDV_ELSAT_load_incremental_belsat -> _Result _Result -> _Delta (current versions)
The loader first stores the new increment, the highest BG_IncrementalFilter of the source. The source view reads the rows between the previous and the new increment from the result views of its sources. The delta view keeps the rows whose Link_HK and BG_RowHash do not match a current version, and the loader inserts them with the load timestamp as BG_ValidFromTimestamp. Without an incremental load, the chain starts at _Source.
Example
The Effectivity Business Link Satellite load_incremental_belsat on Microsoft SQL Server has a relationship to the Link common_loyaltycard_customer between loyalty cards and customers. It reads the Effectivity Link Satellite load_loyaltycard_elsat of the Raw Vault, joined with that Link, and maps both effectivity terms from it. BG_IncrementalFilter is mapped to the BG_LoadTimestamp of load_loyaltycard_elsat, with Increment Management Type Auto. Calculate Effectivity End From Begin and Persist Validity are false. The Raw Vault and then the Business Vault load four times:
- Load 1 on 2026-10-28 08:00: card 501 of customer 1 and card 502 of customer 2, both valid from 2026-01-01 to 2026-12-31.
- Load 2 on 2026-10-29 08:00: card 503 of the new customer 3, valid from 2026-10-29 to 2027-10-28.
- Load 3 on 2026-10-30 08:00: card 501 is renewed from 2027-01-01 to 2027-12-31, and card 502 ends on 2026-10-30.
- Load 4 on 2026-10-31 08:00: no change.
Check the result
Query the result view with the foreign keys of the Link, here in the schemas p3b and p3:
SELECT l.FK_common_loyaltycard_LOYALTYCARD_LOYALTYCARD_ID AS CARD,
l.FK_load_customer_hub_CUSTOMER_CUSTOMER_ID AS CUSTOMER,
s.BG_Effectivity_Begin, s.BG_Effectivity_End,
s.BG_ValidFromTimestamp, s.BG_ValidToTimestamp
FROM p3b.BDV_ELSAT_load_incremental_belsat_Result AS s
JOIN p3.RDV_LNK_common_loyaltycard_customer_Result AS l
ON l.Link_HK = s.Link_HK
ORDER BY CARD, s.BG_ValidFromTimestamp;
This is the result after load 4, with the column names and timestamps shortened:
CARD CUSTOMER Begin End ValidFrom ValidTo 501 1 2026-01-01 2026-12-31 2026-10-28 08:00 2026-10-30 08:00 501 1 2027-01-01 2027-12-31 2026-10-30 08:00 9999-12-31 00:00 502 2 2026-01-01 2026-12-31 2026-10-28 08:00 2026-10-30 08:00 502 2 2026-01-01 2026-10-30 2026-10-30 08:00 9999-12-31 00:00 503 3 2026-10-29 2027-10-28 2026-10-29 08:00 9999-12-31 00:00
- Load 3 changed the dates of the Link rows of cards 501 and 502. Each got a second version, and the first one ended at the load timestamp.
- Each load read only the rows that the Effectivity Link Satellite had stored since the previous increment. Load 4 found none and inserted no row.
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. With true, the table stores
BG_ValidToTimestamp. - The data types of the effectivity terms differ per platform, see BG_Effectivity_Begin.
- Snowflake: names are in capitals, and the loader is a stored procedure. The load control task
LC_BDV_ELSAT_<model object name>_TASKcalls 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
BDV_ELSAT_<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 satellite becomes the dbt models
bdv_elsat_<model object name>_sourceandbdv_elsat_<model object name>. The modelbdv_elsat_<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. Partition Clause adds its text to the
CREATE TABLEstatement. Table Compression, the tablespaces and the statistics properties also apply. - Foreign Key Mode
Create Enforcedexists only on Microsoft SQL Server and Oracle.
Limitations
- An Effectivity Business Link Satellite has exactly one relationship, to a Link or Business Link.
- An unmapped
BG_Effectivity_Beginraises a validation error. - A term other than the Default Terms, business keys and foreign keys raises a validation error. Business keys raise a validation warning.
- Custom Singleton Values, Version Valid From Term and Hash Group Size are not available.
Release differences
- Generator 2.2: Increment Management Type, Use Embryo Loader and Persist Validity are available.
- Generator 2.4: Excluded from Delta Detection is available.
Related articles
- Previous: Business Link, Link, Effectivity Link Satellite
- Next: Business Current View, Configure an incremental load
- Reference: BG_Effectivity_Begin, BG_Effectivity_End, Calculate Effectivity End From Begin (Model Object), Link_HK, BG_RowHash, Persist Validity (Project), Create Result Views (Project), Excluded from Delta Detection (Model Object), Foreign Key Mode (Model Object)
- See also: Effectivity Business Satellite, Business Link Satellite, Change detection and historization, Embryo Loader, Create a Model Object with the wizard