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

Non-Historized Business Satellite

Applies to
Platform: Microsoft SQL Server · Snowflake · Snowflake dbt · Databricks · Databricks dbt · Fabric Lakehouse · Fabric Warehouse · Oracle
Architecture: Data Vault

A Non-Historized Business Satellite stores the descriptive data of each Hub key once, without row hash and validity, in a Business Vault table. Use it for data that a business rule takes from the Raw Vault and that does not change after it arrives. After each load, the result view shows one row per loaded Hub key with the load that inserted it.

A Non-Historized Business Satellite works like a Non-Historized Satellite. It differs in its sources, its layer, its relationship targets and the BDV_ prefix of its objects. Available since Generator 2.4.

Sources and relationships

A Non-Historized Business Satellite reads these 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 Hub or Business Hub, and its foreign-key terms must be mapped. Vault Out can read it.

Create the model object

Loading behavior

The Non-Historized Business Satellite loads each Hub key once. Later rows for the same Hub key are not loaded, even when their values differ. The loader only inserts rows; it never updates or deletes them. With an incremental load, a row whose BG_IncrementalFilter is not above the stored increment is not read, in this or a later load.

Properties

Persist Validity and Version Valid From Term do not apply.

Default Terms

There is no BG_RowHash, BG_ValidFromTimestamp or BG_ValidToTimestamp.

Generated objects

These are the names on Microsoft SQL Server for the Non-Historized Business Satellite load_incremental_bnsat with one dataflow. The prefix is BDV_NHSAT_:

RoleGenerated namePurpose
IncrementSourceBDV_NHSAT_load_incremental_bnsat_IncrementSourceFinds the new increment
IncrementBDV_NHSAT_load_incremental_bnsat_IncrementStores the increments
SourceBDV_NHSAT_load_incremental_bnsat_SourceReads the sources
DeduplicationBDV_NHSAT_load_incremental_bnsat_DeduplicationRemoves duplicate rows
HashingBDV_NHSAT_load_incremental_bnsat_HashingCalculates Hub_HK
HashingStorageBDV_NHSAT_load_incremental_bnsat_HashingTableStores the hashed rows
HashingLoaderBDV_NHSAT_load_incremental_bnsat_HashingLoaderFills the hashing table
EmbryoLoaderBDV_NHSAT_load_incremental_bnsat_EmbryoLoaderAdds missing Hub keys
DeltaBDV_NHSAT_load_incremental_bnsat_DeltaSelects new Hub keys
LoaderBDV_NHSAT_load_incremental_bnsat_LoaderInserts the new rows
StorageBDV_NHSAT_load_incremental_bnsatNon-Historized Business Satellite table
ResultBDV_NHSAT_load_incremental_bnsat_ResultQuery view
  • Loaders are stored procedures; the satellite table, the increment table and the hashing 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 Type Auto.
  • 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.
  • With several dataflows, all objects except the table, the result view and the increment table exist once per dataflow, with the dataflow name in their names.

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_NHSAT_load_incremental_bnsat
BDV_NHSAT_load_incremental_bnsat -> _Result
_Result -> _Delta (Hub keys already stored)

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. The delta view keeps the rows whose Hub_HK is not in the result view, and the loader inserts them. Without an incremental load, the chain starts at _Source.

Example

The Non-Historized Business Satellite load_incremental_bnsat on Microsoft SQL Server has a relationship to the Hub common_salestransaction of sales transaction lines. It reads that Hub joined with the Non-Historized Satellite load_nsat of the Raw Vault. BG_IncrementalFilter is mapped to the BG_LoadTimestamp of load_nsat, with Increment Management Type Auto. QUANTITY is mapped as a descriptive term. Each load runs the Raw Vault and then the Business Vault with the same load timestamp:

  • Load 1 on 2026-11-09 08:00: load_nsat stores transaction 1001, line 1 with quantity 2 and line 2 with quantity 1.
  • Load 2 on 2026-11-10 08:00: load_nsat stores the new transaction 1002, line 1, quantity 4. 1001 line 1 arrives again with quantity 3 and is not loaded there.
  • Load 3 on 2026-11-11 08:00: load_nsat stores no new row.

Check the result

Query the result view with the business keys of the Hub, here in the schemas businessvault and rawvault:

SELECT h.TRANSACTION_ID, h.TRANSACTION_LINE_NO AS LINE_NO,
       b.QUANTITY, b.BG_LoadTimestamp
FROM businessvault.BDV_NHSAT_load_incremental_bnsat_Result AS b
JOIN rawvault.RDV_HUB_common_salestransaction_Result AS h
  ON h.Hub_HK = b.Hub_HK
ORDER BY h.TRANSACTION_ID, h.TRANSACTION_LINE_NO;

This is the result after load 3:

TRANSACTION_ID  LINE_NO  QUANTITY  BG_LoadTimestamp
1001            1        2.000     2026-11-09 08:00
1001            2        1.000     2026-11-09 08:00
1002            1        4.000     2026-11-10 08:00
  • Each load read only the rows that the Raw Vault satellite had stored in the same load, so the values match those of the Raw Vault.
  • Load 3 found no new rows and inserted nothing.

Platform differences

  • Snowflake: names are in capitals, and the loader is a stored procedure. The load control task LC_BDV_NHSAT_<model object name>_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 BDV_NHSAT_<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 satellite becomes the dbt models bdv_nhsat_<model object name>_source and bdv_nhsat_<model object name>. The second model is the table and inserts only Hub keys that it does not hold yet. The model bdv_nhsat_<model object name>_result is generated 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 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 Non-Historized Business Satellite has exactly one relationship, to a Hub or Business Hub. Business keys raise a validation warning.
  • Corrections of an already loaded Hub key do not reach the table. A Business Satellite stores changing data with its history.
  • On Microsoft SQL Server, a dataflow that delivers the same Hub key twice in one load makes the loader fail with a primary key violation.

Related articles