ELT SCD2
Overview
You can use this Snap to implement the Slowly Changing Dimension Type 2 (SCD2) function in your Snowflake, Redshift, Azure Synapse, Databricks Lakehouse Platform, or BigQuery table. Configure the database type and the access to corresponding tables in the Configuring ELT Database Accounts for the Snap.
Switching the Snap behavior
The ELT SCD2 Snap performs a MERGE INTO-based SCD2 operation as opposed to its initial INSERT-and-then-UPDATE approach. If you prefer to use the INSERT-and-then-UPDATE approach for your SCD2 operation, define the Pipeline parameter SCD2_INSERTUPDATE_FALLBACK_MODE with a value greater than zero (0), before running your Pipeline.
Snap Type
The ELT SCD2 Snap is a write-type Snap that writes SCD2 data from a source location to a supported CDW destination.
Prerequisites
Valid accounts and access permissions to connect to the following:
Source: AWS S3, Azure Cloud Storage, or Google Cloud Storage.
Target: Snowflake, Redshift, Azure Synapse, Databricks Lakehouse Platform, or BigQuery.
Limitation
Known Issues
Snap Views
Type | Format | Number of Views | Examples of Upstream and Downstream Snaps | Description |
|---|---|---|---|---|
Input | Document |
|
| A document containing an SQL query that yields the historization data to load. |
Output | Document |
|
| A document containing the status of the SCD2 Load operation along with the SQL query that you can use in downstream ELT Snaps if any. |
Error | Error handling is a generic way to handle errors without losing data or failing the Snap execution. You can handle the errors that the Snap might encounter when running the Pipeline by choosing one of the following options from the When errors occur list under the Views tab:
Learn more about Error handling in Pipelines. | |||
Snap Settings
Asterisk ( * ): Indicates a mandatory field.
Suggestion icon (): Indicates a list that is dynamically populated based on the configuration.
Expression icon ( ): Indicates the value is an expression (if enabled) or a static value (if disabled). Learn more about Using Expressions in SnapLogic.
Add icon ( ): Indicates that you can add fields in the fieldset.
Remove icon ( ): Indicates that you can remove fields from the fieldset.
Upload icon ( ): Indicates that you can upload files.
You can use the SQL Expressions and Functions supported for ELT to define your Snap or Account settings with the Expression icon enabled, where available. Though this list covers only expressions that are common to all supported target CDWs, you can use (type-in manually) other expressions/functions permitted by your target CDW.
See ELT SCD2 Scenarios | Terminology for definitions of the ELT SCD2 terms used in this Snap's configuration.
Field Name | Field Type | Field Dependency | Description | |
|---|---|---|---|---|
Label*
Default Value: N/A | String | None. | Specify a name for the Snap. You can modify this to be more specific, especially if you have more than one of the same Snap in your Pipeline. | |
Get preview data
Default Value: Not selected | Checkbox | None. | Select this checkbox to include a preview of the query's output. The Snap performs limited execution and generates a data preview during Pipeline validation. In case of ELT Pipelines, only the SQL query flows through the Snaps but not the actual source data. Hence, the preview data for a Snap is the result of executing the SQL query that the Snap has generated in the Pipeline. The number of records displayed in the preview (upon validation) is the smaller of the following:
Rendering Complex Data Types in Databricks Lakehouse Platform Based on the data types of the fields in the input schema, the Snap renders the complex data types like map and struct as object data type and array as an array data type. It renders all other incoming data types as-is except for the values in binary fields are displayed as a base64 encoded string and as string data type. | |
Database Name
Default Value: N/A | String/Expression | None. | Specify the name of the database in which the target table exists. Leave this field blank if you want to use the database name specified in the Default Database Name field of your Snap Account settings. | |
Schema Name (Not applicable to Databricks Lakehouse Platform)*
Default Value: N/A | String/Expression/Suggestion | None. | Specify the name of the database schema. Alternatively, choose from the suggested list of schemas associated with the database.
| |
Target Table Name*
Default Value: N/A | String/Expression/Suggestion | None. | Specify the name of the SCD2 table or view in which you want to load the data. Alternatively, choose from the suggested list of table names associated with the schema. Only views that can be updated (have new rows) are listed as suggestions. So, Join views are not included. This also implies that the Snap account user has the Insert privileges on the views listed as suggestions.
| |
Input Source Alias
Default Value: N/A | String/Expression | None. | Specify an alias name for your source data table. | |
Target Table Action
Default Value: Merge data into target table | Drop-down list | None. | Select the SCD2 action to perform on the target table. Available options are:
Selecting the Target Table Action
During Pipeline Validation The Snap does not modify the existing tables during Pipeline validation, but if the specified target table does not exist, it creates a new target table. | |
Table Columns | Field set | Target Table Action is Drop and Create table or Alter table. | This field set enables you to configure the schema of the target table. You can use this field set to create the target table or to add or drop columns from it. This field set consists of the following fields:
| |
| Column
Default Value: N/A | String/Suggestion | Same as Table Columns. | Specify the name of the column that you want to load in the target table. You can also specify the columns to drop if you select the Alter table option in the Target Table Action field. |
Data Type
Default Value: N/A | String | Same as Table Columns. | Specify the data type for the values in the specified column. | |
Modifier
Default Value: Add | Drop-down list | Target Table Action is Alter table. | Select whether you want to add/drop the specified column. Available options are:
| |
Null Value Behavior
Default Value: Honor nulls as distinct values | Drop-down list | None. | Select an option to specify how you want the Snap to treat rows with null values in Natural Key or Cause-Historization fields of the source table. The available options are:
Refer to the ELT SCD2 scenarios to learn more about the impact of the selection you make in this field. | |
Invalid Row Handling
Default Value: Ignore invalid rows Example: Insert duplicate invalid rows | Drop-down list | None. | Select an option to specify how you want the Snap to treat invalid rows, if any, in the source data. A row is considered invalid when it does not result in a new, valid, and coherent SCD2 entry/row in the target table. The available options are:
Refer to the ELT SCD2 scenarios to learn more about the impact of the selection you make in this field. | |
Target Table Natural Key(s)* | This field set enables you to configure the names of fields that identify a unique row in the target table. The identity key cannot be used as the Natural key, since a current row and its historical rows cannot have the same identity value. Specify the value in the following field for each new row added in this field set.
| |||
Target Table Natural Key(s)
Default Value: N/A Example: CUSTOMER_ID Example (Dynamic): | String/Expression/Suggestion |
| Specify the name of the Natural Key column from the target table. This field also supports the | |
Target Table Cause-Historization Field(s)* | This field set enables you to configure the names of fields where any change in value causes the historization of an existing row and the insertion of a new 'current' row. Specify the value in the following field for each new row added in this field set.
| |||
Target Table Cause-Historization Field(s)*
Default Value: N/A Example: LAST_ORDER_AMT Example (Dynamic): | String/Expression/Suggestion | None. | Specify the name of the historization-causing column from the target table. The field also supports the | |
Target Table Temporal Field(s)* | This field set enables you to configure the historical and updated information for the Cause-historization field. Click to add SCD fields. Specify the values in the following fields for each SCD field row in the field set.
| |||
Meaning*
| ||||
Have feedback? Email documentation@snaplogic.com | Ask a question in the SnapLogic Community
© 2017-2025 SnapLogic, Inc.