Skip to main content

Incremental Write Strategy with Schema Change

Incremental write strategy that defines how new data is merged with existing data, along with policy for handling schema changes.

IncrementalWriteStrategyWithSchemaChange

info

IncrementalWriteStrategyWithSchemaChange is defined beneath the following ancestor nodes in the YAML structure:

Below are the properties for the IncrementalWriteStrategyWithSchemaChange. Each property links to the specific details section further down in this page.

PropertyDefaultTypeRequiredDescription
incrementalAny of:
  append
  MergeStrategy
YesOptions to use when incrementally writing data to a Write component.
incremental_columnstringYesName of the column to use for tracking incremental updates to the data.
on_schema_changestring ("ignore", "fail", "append_new_columns", "sync_all_columns")
NoPolicy to apply when schema changes are detected. Defaults to 'fail' if not provided.

Property Details

Component

A Component is a fundamental building block of a data Flow. Supported Component types include: Read, Transform, Task, Test, and more.

PropertyDefaultTypeRequiredDescription
componentOne of:
  CustomPythonReadComponent
  ApplicationComponent
  AliasedTableComponent
  ExternalTableComponent
  FivetranComponent
YesComponent configuration options.

WriteComponent

PropertyDefaultTypeRequiredDescription
skipboolean
NoBoolean flag indicating whether to skip processing for the Component or not.
retry_strategyNoRetry strategy configuration options for the Component if any exceptions are encountered.
descriptionstring
NoBrief description of what the model does.
metadataNoMeta information of a resource. In most cases it doesn't affect the system behavior but may be helpful to analyze project resources.
namestringYesThe name of the model
flow_namestring
NoName of the Flow that the Component belongs to.
writeOne of:
  BigQueryWriteComponent
  SnowflakeWriteComponent
  S3WriteComponent
  SFTPWriteComponent
  GcsWriteComponent
  AbfsWriteComponent
  MySQLWriteComponent
  OracleWriteComponent
  PostgresWriteComponent
Yes

BigQueryWriteComponent

Component that writes data to a BigQuery table.

PropertyDefaultTypeRequiredDescription
dependenciesarray[None]
NoList of dependencies that must complete before this Component runs.
connectionstringYesName of the Connection to use for writing data.
inputYesInput component name.
normalizeboolean
NoBoolean flag indicating if the output column names should be normalized to a standard naming convention when writing.
preserve_caseboolean
NoBoolean flag indicating if the case of the column names should be preserved when writing.
uppercaseboolean
NoBoolean flag indicating if the column names should be transformed to uppercase when writing.
strategyfull:
  mode: drop_and_recreate
Any of:
  snapshot
  FullWriteStrategy
  IncrementalWriteStrategyWithSchemaChange
  PartitionedWriteStrategyWithSchemaChange
NoResource for write strategy.
pre_sqlAny of:
  string
  array[string]
NoSQL statements to execute before the main write operation. Can be a single SQL statement string or multiple statements as a list of strings.
post_sqlAny of:
  string
  array[string]
NoSQL statements to execute after the main write operation. Can be a single SQL statement string or multiple statements as a list of strings.
bigqueryYes

MySQLWriteComponent

Component that writes data to a MySQL table

PropertyDefaultTypeRequiredDescription
dependenciesarray[None]
NoList of dependencies that must complete before this Component runs.
connectionstringYesName of the Connection to use for writing data.
inputYesInput component name.
normalizeboolean
NoBoolean flag indicating if the output column names should be normalized to a standard naming convention when writing.
preserve_caseboolean
NoBoolean flag indicating if the case of the column names should be preserved when writing.
uppercaseboolean
NoBoolean flag indicating if the column names should be transformed to uppercase when writing.
strategyfull:
  mode: drop_and_recreate
Any of:
  snapshot
  FullWriteStrategy
  IncrementalWriteStrategyWithSchemaChange
  PartitionedWriteStrategyWithSchemaChange
NoResource for write strategy.
pre_sqlAny of:
  string
  array[string]
NoSQL statements to execute before the main write operation. Can be a single SQL statement string or multiple statements as a list of strings.
post_sqlAny of:
  string
  array[string]
NoSQL statements to execute after the main write operation. Can be a single SQL statement string or multiple statements as a list of strings.
mysqlYes

OracleWriteComponent

Component that writes data to an Oracle table

PropertyDefaultTypeRequiredDescription
dependenciesarray[None]
NoList of dependencies that must complete before this Component runs.
connectionstringYesName of the Connection to use for writing data.
inputYesInput component name.
normalizeboolean
NoBoolean flag indicating if the output column names should be normalized to a standard naming convention when writing.
preserve_caseboolean
NoBoolean flag indicating if the case of the column names should be preserved when writing.
uppercaseboolean
NoBoolean flag indicating if the column names should be transformed to uppercase when writing.
strategyfull:
  mode: drop_and_recreate
Any of:
  snapshot
  FullWriteStrategy
  IncrementalWriteStrategyWithSchemaChange
  PartitionedWriteStrategyWithSchemaChange
NoResource for write strategy.
pre_sqlAny of:
  string
  array[string]
NoSQL statements to execute before the main write operation. Can be a single SQL statement string or multiple statements as a list of strings.
post_sqlAny of:
  string
  array[string]
NoSQL statements to execute after the main write operation. Can be a single SQL statement string or multiple statements as a list of strings.
oracleYes

PostgresWriteComponent

Component that writes data to a Postgres table

PropertyDefaultTypeRequiredDescription
dependenciesarray[None]
NoList of dependencies that must complete before this Component runs.
connectionstringYesName of the Connection to use for writing data.
inputYesInput component name.
normalizeboolean
NoBoolean flag indicating if the output column names should be normalized to a standard naming convention when writing.
preserve_caseboolean
NoBoolean flag indicating if the case of the column names should be preserved when writing.
uppercaseboolean
NoBoolean flag indicating if the column names should be transformed to uppercase when writing.
strategyfull:
  mode: drop_and_recreate
Any of:
  snapshot
  FullWriteStrategy
  IncrementalWriteStrategyWithSchemaChange
  PartitionedWriteStrategyWithSchemaChange
NoResource for write strategy.
pre_sqlAny of:
  string
  array[string]
NoSQL statements to execute before the main write operation. Can be a single SQL statement string or multiple statements as a list of strings.
post_sqlAny of:
  string
  array[string]
NoSQL statements to execute after the main write operation. Can be a single SQL statement string or multiple statements as a list of strings.
postgresYes

SnowflakeWriteComponent

Component that writes data to a Snowflake table.

PropertyDefaultTypeRequiredDescription
dependenciesarray[None]
NoList of dependencies that must complete before this Component runs.
connectionstringYesName of the Connection to use for writing data.
inputYesInput component name.
normalizeboolean
NoBoolean flag indicating if the output column names should be normalized to a standard naming convention when writing.
preserve_caseboolean
NoBoolean flag indicating if the case of the column names should be preserved when writing.
uppercaseboolean
NoBoolean flag indicating if the column names should be transformed to uppercase when writing.
strategyfull:
  mode: drop_and_recreate
Any of:
  snapshot
  FullWriteStrategy
  IncrementalWriteStrategyWithSchemaChange
  PartitionedWriteStrategyWithSchemaChange
NoResource for write strategy.
pre_sqlAny of:
  string
  array[string]
NoSQL statements to execute before the main write operation. Can be a single SQL statement string or multiple statements as a list of strings.
post_sqlAny of:
  string
  array[string]
NoSQL statements to execute after the main write operation. Can be a single SQL statement string or multiple statements as a list of strings.
snowflakeYes

MergeStrategy

Strategy that involves merging new data with existing data by updating existing records that match the unique key.

PropertyDefaultTypeRequiredDescription
mergeNoOptions for merge strategy.

KeyOptions

Column options needed for merge and SCD Type 2 strategies, such as unique key and deletion column name.

PropertyDefaultTypeRequiredDescription
unique_keystringYesColumn or comma-separated set of columns used as a unique identifier for records, aiding in the merge process.
deletion_columnstring
NoColumn name used in the upstream source for soft-deleting records. Used when replicating data from a source that supports soft-deletion. If provided, the merge strategy will be able to detect deletions and mark them as deleted in the destination. If not provided, the merge strategy will not be able to detect deletions.
merge_update_columnsAny of:
  string
  array[string]
NoList of columns to include when updating values in merge. These columns are mutually exclusive with respect to the columns in merge_exclude_columns.
merge_exclude_columnsAny of:
  string
  array[string]
NoList of columns to exclude when updating values in merge. These columns are mutually exclusive with respect to the columns in merge_update_columns.
incremental_predicatesAny of:
  string
  array[string]
NoList of conditions to filter incremental data.