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

Same As Link

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

A Same As Link stores pairs of business keys of one Hub that identify the same business object, such as a customer recorded twice in two source systems, with the hash key Link_HK, in a table of the Raw Vault layer. Use it to map duplicate keys to a main key without changing the Hub. After each load, the result view shows one row per pair and the load that first delivered it.

Earlier versions of this article spelled the type "Same as Link".

Sources and relationships

A Same As Link reads Stages, RawVault Composites and Store Entities of a linked Data Store project, in one or more dataflows. It has exactly two relationships, both to the same Hub, with roles such as MAIN and DUPLICATE. The foreign-key terms are the business keys of the Same As Link. The source delivers the pairs, for example from a matching table.

Record Tracking Link Satellites, Effectivity Link Satellites reference a Same As Link. PIT, Current View, History View, BusinessVault Composite, Vault Out and the Business Vault types can read it as a source.

Create the model object

Properties

Default Terms

See How biGENIUS-X builds hash values.

Generated objects

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

RoleGenerated namePurpose
SourceRDV_SAL_load_sal_SourceReads the sources
DeduplicationRDV_SAL_load_sal_DeduplicationRemoves duplicate rows
HashingRDV_SAL_load_sal_HashingCalculates the hash keys
HashingStorageRDV_SAL_load_sal_HashingTableStores the hashed rows
HashingLoaderRDV_SAL_load_sal_HashingLoaderFills the hashing table
EmbryoLoaderRDV_SAL_load_sal_EmbryoLoaderAdds missing Hub keys
DeltaRDV_SAL_load_sal_DeltaSelects new pairs
LoaderRDV_SAL_load_sal_LoaderInserts the new rows
StorageRDV_SAL_load_salSame As Link table
ResultRDV_SAL_load_sal_ResultQuery view
  • Loaders are stored procedures; the Same As 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:

sources -> _Source -> _Hashing -> _Delta -> _Loader
_Loader -> RDV_SAL_load_sal -> _Result
_Result -> _Delta (pairs already stored)

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. The loader never updates or deletes rows, so a pair that the source no longer delivers stays in the table. 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 Link load_sal on Microsoft SQL Server reads the Stage CUSTOMER_DUPLICATES, which holds a main customer number and a duplicate number per row. Both relationships go to the Hub load_customer_hub, with the roles MAIN and DUPLICATE. The loads deliver these pairs:

  • Load 1 on 2026-10-28 08:00: customer 4 is a duplicate of customer 1.
  • Load 2 on 2026-10-29 08:00: the same pair, and customer 5 as a duplicate of customer 2.

Check the result

Query the result view, here in the schema rv:

SELECT FK_load_customer_hub_MAIN_CUSTOMER_ID AS MAIN_ID,
       FK_load_customer_hub_DUPLICATE_CUSTOMER_ID AS DUPLICATE_ID,
       load_customer_hub_MAIN_HK AS MAIN_HK,
       load_customer_hub_DUPLICATE_HK AS DUPLICATE_HK, BG_LoadTimestamp
FROM rv.RDV_SAL_load_sal_Result
ORDER BY MAIN_ID;

This is the result after load 2, with hash keys shortened to their first four bytes:

MAIN_ID  DUPLICATE_ID  MAIN_HK     DUPLICATE_HK  BG_LoadTimestamp
1        4             0xE91FE173  0x7454695E    2026-10-28 08:00
2        5             0x21ED4C7A  0xF7DDF59B    2026-10-29 08:00
  • Load 2 inserted only the new pair of customers 2 and 5.
  • MAIN_HK 0xE91FE173 is the key of customer 1 in the Hub.
  • The loader does not check the Hub: in this example, customers 4 and 5 are not in the Hub.

Platform differences

  • Snowflake: names are in capitals, and the loader is a stored procedure. The load control task LC_RDV_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 RDV_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 Link becomes the dbt models rdv_sal_<model object name>_source and rdv_sal_<model object name>. The model rdv_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 Link has exactly two relationships to the same Hub and no terms other than foreign keys and Default Terms. Validation reports an error otherwise.
  • The Same As Link does not find duplicates. The source must deliver the pairs.
  • 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