Hub Satellite
In Data Vault 2.0, a Satellite stores descriptive attributes for a core business concept (Hub) or a relationship (Link). Satellites capture historical changes to these attributes over time, providing a full audit trail. Each Satellite is attached to a single Hub or Link.
Hub Satellite Properties Overview
Property | Type | Description |
---|---|---|
name | String | The unique name for the Satellite object. This name will be used for the generated table. Example: 'SAT_CUSTOMER_DETAILS' |
entity_type | String | Must be set to 'hubsat' for a Satellite attached to a Hub. |
enable_refresh | Boolean | if true , satellite receives new data. Set to false if the source contains not-changing (historical) data. See Shared Properties. |
connected_entity | String | The name of the Hub this Satellite is attached to. Example: 'HUB_CUSTOMER' . |
ordering_columns | List of Strings | Specifies columns from the source used to order records when selecting the most recent or relevant row for a given business key, especially if duplicates exist. |
skip_hashdiff_comparison | Boolean | Default: false . If true , S2V will not generate or compare a hashdiff for the descriptive attributes, meaning all incoming records are treated as new versions. |
entity_source | Map | Defines the single source that feeds data into this Satellite. The key is the source tuple, and the value contains source details. See Entity Sources Definition. |
historized_columns | List of Strings | A list of column names from the source that should be included in the Satellite and are considered part of its descriptive, versioned content. |
non_historized_columns | List of Strings | A list of column names from the source that should be included in the Satellite but are not considered for historization or hashdiff comparison. |
Hub Satellite-Specific Property Details
connected_entity
- Type:
String
- Description: Specifies the name of the parent Hub to which this Satellite is attached. The Satellite will inherit the business key structure from this parent entity.
ordering_columns
- Type:
List of Strings
- Description: This property is used to specify one or more columns from the source table that determine the order of records. When multiple records from the source might map to the same business key,
ordering_columns
(often a timestamp or sequence number) are used to pick the most relevant record for loading.
skip_hashdiff_comparison
- Type:
Boolean
- Description:
- If
false
(default): S2V will compute a hashdiff for the columns listed inhistorized_columns
. A new record is inserted into the Satellite only if the hashdiff changes or if the business key is new. - If
true
: S2V will not compute or use a hashdiff. Every incoming record from the source (after filtering and business key mapping) will result in a new entry in the Satellite, effectively creating a new version regardless of whether the descriptive attributes have changed. This can be useful for logging all source system changes or when the source guarantees unique records per load.
- If
historized_columns
- Type:
List of Strings
- Description: Lists the names of the columns from the source table that contain the descriptive attributes of the entity. These are the columns whose values are tracked for changes over time. Changes in these columns (when
skip_hashdiff_comparison
isfalse
) will result in a new record (version) in the Satellite.
non_historized_columns
- Type:
List of Strings
- Description: Lists the names of columns from the source table that should be included in the Satellite table but are not considered for hashdiff calculation (i.e., changes to these columns won't trigger a new version). These might include metadata, operational flags, or attributes that are descriptive but not part of the core historical tracking.
Simple Example
This example defines a basic Hub Satellite SAT_CUSTOMER_DETAILS
attached to HUB_CUSTOMER
. It sources customer descriptive attributes like CDC_FLAG
(historized) and CUSTOMER_NAME
(non-historized) from a single source table CUSTOMER
.
name: 'SAT_CUSTOMER_DETAILS'
entity_type: 'hubsat'
ordering_columns:
skip_hashdiff_comparison: false
enable_refresh: true
connected_entity: 'HUB_CUSTOMER'
entity_source:
(SOURCE_DATA, CUSTOMER):
source_filter: ''
use_source_cdc_flag: false
source_system_configuration_urn: 'urn:s2v:source_setting:SAP_SE'
business_key_mapping:
- CUSTOMER_ID:
- 'CUSTOMER_ID'
source_business_key: ''
historized_columns:
- 'CDC_FLAG'
non_historized_columns:
- 'CUSTOMER_NAME'
Don't forget to ensure that the business key name defined in the business_key_mapping
matches the business key name used in the Hub it connects.
Comprehensive Example
This example showcases a Hub Satellite SATELLITE_ONLY_CUSTOMER_DETAILS
also attached to HUB_CUSTOMER
. It demonstrates using a lookup_mapping to resolve the business key. The satellite sources descriptive attributes from a local ERP table CUSTOMER_DATA
, looking up the CUSTOMER_PK
from a master data source defined in HUB_CUSTOMER's entity_sources (referenced by hub_source_urn
).
name: 'SATELLITE_ONLY_CUSTOMER_DETAILS'
entity_type: 'hubsat'
ordering_columns:
skip_hashdiff_comparison: false
enable_refresh: true
connected_entity: 'HUB_CUSTOMER'
entity_source:
(LOCAL_ERP, CUSTOMER_DATA):
source_filter: ''
use_source_cdc_flag: false
source_system_configuration_urn: 'urn:s2v:source_setting:GLOBAL_ERP'
lookup_mapping:
hub_source_urn: urn:s2v:hub_source:master_data_customer
entity_source_join_columns:
- 'CUSTOMER_FK'
hub_source_join_columns:
- 'CUSTOMER_PK'
historized_columns:
- 'CDC_FLAG'
non_historized_columns:
- 'CUSTOMER_NAME'