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
- With the wizard: open the menu of a Stage, RawVault Composite or Store Entity, choose Automate and then Create Same As Link. Its steps are Create Model Object, Create Dataflow, Create Multiple Relations, Define Roles, Map Foreign Key Terms and Add to View. See Create a Model Object with the wizard.
- Manually: create a model object of type Same As Link in the Raw Vault layer, add two relationships to the Hub with a role each, create a dataflow set, add the source model object and map the foreign-key terms.
Properties
- Implementation Type:
Permanentonly. - Foreign Key Mode: whether the table gets foreign keys to the Hub table. With
Create Disabled, the default, they are created and disabled. - Load Caching: empty (default) or
Hashing, which stores the hashing view in a table before the loader runs. - Custom Singleton Values: values of the unknown-member row.
- Deduplication Method and Sort Order within Partition, per dataflow.
- Use Embryo Loader, per relationship: inserts business keys that the Hub does not hold yet.
Default Terms
Link_HK: hash of both business keys and primary key of the table.DVLINK_ForeignKey_Identity: names one hash-key column per relationship,<Hub name>_<role>_HK, for exampleload_customer_hub_DUPLICATE_HK, with the key of the related Hub row.BG_LoadTimestampandBG_SourceSystem: the load that inserted the row and its source system, empty unless you map it.BG_DataQuality_ID,BG_ErrorCountandBG_ErrorDescription: hidden terms of the data quality objects.
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:
| Role | Generated name | Purpose |
|---|---|---|
| Source | RDV_SAL_load_sal_Source | Reads the sources |
| Deduplication | RDV_SAL_load_sal_Deduplication | Removes duplicate rows |
| Hashing | RDV_SAL_load_sal_Hashing | Calculates the hash keys |
| HashingStorage | RDV_SAL_load_sal_HashingTable | Stores the hashed rows |
| HashingLoader | RDV_SAL_load_sal_HashingLoader | Fills the hashing table |
| EmbryoLoader | RDV_SAL_load_sal_EmbryoLoader | Adds missing Hub keys |
| Delta | RDV_SAL_load_sal_Delta | Selects new pairs |
| Loader | RDV_SAL_load_sal_Loader | Inserts the new rows |
| Storage | RDV_SAL_load_sal | Same As Link table |
| Result | RDV_SAL_load_sal_Result | Query 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_HK0xE91FE173 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>_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
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 ModeNone. - Databricks dbt and Snowflake dbt: the Same As Link becomes the dbt models
rdv_sal_<model object name>_sourceandrdv_sal_<model object name>. The modelrdv_sal_<model object name>_resultexists 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 TABLEstatement. Table Compression, the tablespaces and the statistics properties also apply. - Foreign Key Mode
Create Enforcedexists 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
- Previous: Hub
- Next: Record Tracking Link Satellite, Effectivity Link Satellite
- Reference: Link_HK, DVLINK_ForeignKey_Identity, Foreign Key Mode (Model Object), Load Caching (Model Object), Custom Singleton Values (Model Object), Create Result Views (Project)
- See also: Link, Embryo Loader, How biGENIUS-X builds hash values, Create a Model Object with the wizard, Model a Data Vault Solution