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

Same As Business Link

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

A Same As Business Link stores pairs of keys of one Hub or Business Hub that identify the same business object, in a table of the Business Vault layer. Use it when a business rule decides from Raw Vault data which keys are duplicates of a main key. After each load, the result view shows one row per pair and the load that first delivered it.

A Same As Business Link works like a Same As Link. It differs in its sources, its layer, its relationship targets and the BDV_ prefix of its objects. Earlier versions of this article spelled the type "Same as Business Link".

Sources and relationships

A Same As Business Link 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 two relationships, both to the same Hub or Business Hub, with roles. The foreign-key terms are the business keys of the Same As Business Link. The source delivers the pairs; the Same As Business Link does not find duplicates itself.

Vault Out can read it as a source.

Create the model object

Properties

Default Terms

Generated objects

These are the names on Microsoft SQL Server for the Same As Business Link load_bsal with one dataflow:

RoleGenerated namePurpose
SourceBDV_SAL_load_bsal_SourceReads the sources
DeduplicationBDV_SAL_load_bsal_DeduplicationRemoves duplicate rows
HashingBDV_SAL_load_bsal_HashingCalculates the hash keys
HashingStorageBDV_SAL_load_bsal_HashingTableStores the hashed rows
HashingLoaderBDV_SAL_load_bsal_HashingLoaderFills the hashing table
EmbryoLoaderBDV_SAL_load_bsal_EmbryoLoaderAdds missing Hub keys
DeltaBDV_SAL_load_bsal_DeltaSelects new pairs
LoaderBDV_SAL_load_bsal_LoaderInserts the new rows
StorageBDV_SAL_load_bsalSame As Business Link table
ResultBDV_SAL_load_bsal_ResultQuery view
  • Loaders are stored procedures; the Same As Business Link table and the hashing table are tables; all other objects are views.
  • 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 delta view then reads the hashing table.
  • The embryo loader exists only when Use Embryo Loader is true on a relationship. It runs before the loader.
  • 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 hash keys of zeros. The result view hides it.
  • The result view always exists, independent of Create Result Views.

With the default settings, a load runs this chain:

Raw Vault _Result views -> _Source -> _Hashing -> _Delta
_Delta -> _Loader -> BDV_SAL_load_bsal -> _Result
_Result -> _Delta (pairs already stored)

The source view reads the result views of its sources. The hashing view calculates Link_HK and the Hub key of each role. The delta view keeps the rows whose Link_HK is not in the result view, and the loader inserts them with the load timestamp. The loader never updates or deletes rows. With the optional objects, _Deduplication sits between _Source and _Hashing, _HashingLoader fills _HashingTable before the delta view reads it, and _EmbryoLoader writes missing keys to the Hub table.

Example

The Same As Business Link load_bsal on Microsoft SQL Server reads the Same As Link load_sal of the Raw Vault. Its two relationships go to the Hub load_customer_hub, with the roles CUSTOMER for the main key and CUSTOMER1 for the duplicate. The Raw Vault and then the Same As Business Link load four times:

  • Load 1 on 2026-10-28 08:00: customer 4 is a duplicate of customer 1.
  • Load 2 on 2026-10-29 08:00: customer 5 is a duplicate of customer 2.
  • Loads 3 and 4 on 2026-10-30 and 2026-10-31 08:00: no new pair.

Check the result

Query the result view, here in the schema p3b:

SELECT FK_load_customer_hub_CUSTOMER_CUSTOMER_ID AS CUSTOMER_ID,
       FK_load_customer_hub_CUSTOMER1_CUSTOMER_ID AS DUPLICATE_ID,
       BG_LoadTimestamp
FROM p3b.BDV_SAL_load_bsal_Result
ORDER BY CUSTOMER_ID;

This is the result after load 4:

CUSTOMER_ID  DUPLICATE_ID  BG_LoadTimestamp
1            4             2026-10-28 08:00
2            5             2026-10-29 08:00
  • Each pair was inserted by the load that first delivered it.
  • Loads 3 and 4 inserted no row.

Platform differences

  • Snowflake: names are in capitals, and the loader is a stored procedure. The load control task LC_BDV_SAL_<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_SAL_<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 Same As Business Link becomes the dbt models bdv_sal_<model object name>_source and bdv_sal_<model object name>. The model bdv_sal_<model object name>_result exists only when Create Result Views is true; the default on dbt is false. Load Caching 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 Same As Business Link has exactly two relationships to the same Hub or Business Hub and no terms other than foreign keys and Default Terms. Validation reports an error otherwise.
  • A dataflow that delivers the same pair twice in one load makes the loader fail with a primary key violation. A Deduplication Method removes such duplicates before hashing.

Release differences

  • Generator 2.2: Use Embryo Loader is available.
  • Generator 2.3: Custom Singleton Values is available.

Related articles