Skip to main content

Transformations

oracdc provides several Single Message Transformations (SMTs) for converting between Oracle-native data types and standard Kafka Connect types.

OraNumberConverter

Class: solutions.a2.kafka.transforms.OraNumberConverter

Converts native Oracle NUMBER bytes (solutions.a2.cdc.oracle.data.OraNumber / oracle.sql.NUMBER) to standard Kafka Connect numeric types.

Use this transformation when consuming oracdc data with a2.oracdc.schemas=true and you need standard numeric types for downstream consumers.

Configuration

ParameterDefaultDescription
field(empty)Field containing OraNumber data to convert. When empty, all fields of type solutions.a2.cdc.oracle.data.OraNumber are processed
target.typestringConversion target type: string, decimal, double, float, long, int, or short
decimal.scale2Scale of org.apache.kafka.connect.data.Decimal (used with target.type=decimal)
decimal.precision0Precision of org.apache.kafka.connect.data.Decimal (used with target.type=decimal)
replace.null.with.defaulttrueWhen true, null values in fields with a default are replaced by the default value
transforms=numberConvert
transforms.numberConvert.type=solutions.a2.kafka.transforms.OraNumberConverter
transforms.numberConvert.target.type=decimal
transforms.numberConvert.decimal.scale=2

OraIntervalConverter

Class: solutions.a2.kafka.transforms.OraIntervalConverter

Converts native Oracle INTERVAL bytes to standard Kafka Connect types:

  • solutions.a2.cdc.oracle.data.OraIntervalYM (INTERVAL YEAR TO MONTH) — converted to string representation
  • solutions.a2.cdc.oracle.data.OraIntervalDS (INTERVAL DAY TO SECOND) — converted to string representation

Configuration

ParameterDefaultDescription
field(empty)Field containing OraIntervalDS/OraIntervalYM data to convert. When empty, all fields of these types are processed
replace.null.with.defaulttrueWhen true, null values in fields with a default are replaced by the default value
transforms=intervalConvert
transforms.intervalConvert.type=solutions.a2.kafka.transforms.OraIntervalConverter

HeaderToFieldConverter

Class: solutions.a2.kafka.transforms.HeaderToFieldConverter

Converts Kafka record headers to fields within the record value. Useful when header information (such as source metadata added by oracdc) needs to be included in the record for downstream processing or sinking to databases that don't support Kafka headers.

Configuration

ParameterDefaultDescription
header(empty)Name of the header to copy. Must be set for the transformation to take effect
field(empty)Name of the value field to write the header content to. Must be set for the transformation to take effect
map(empty)Optional value mapping in h1:v1[,h2:v2] format — replaces header value h1 with v1, etc.
transforms=headersToFields
transforms.headersToFields.type=solutions.a2.kafka.transforms.HeaderToFieldConverter
transforms.headersToFields.header=op
transforms.headersToFields.field=operation

KeyToValueConverter

Class: solutions.a2.kafka.transforms.KeyToValueConverter

Converts fields from the record key schema into the value schema. Useful when key fields need to be duplicated in the value for systems that don't process key schemas separately (e.g., JDBC sink connectors that only read the value).

Configuration

ParameterDefaultDescription
fields(required)Comma-separated list of key fields to copy into the value
transforms=keyToValue
transforms.keyToValue.type=solutions.a2.kafka.transforms.KeyToValueConverter
transforms.keyToValue.fields=DEPTNO

ToLowerCaseNameConverter

Class: solutions.a2.kafka.transforms.ToLowerCaseNameConverter

Converts schema names and field names to lowercase. Useful when the target system requires lowercase identifiers (e.g., PostgreSQL, which folds unquoted identifiers to lowercase).

Configuration

ParameterDefaultDescription
field(empty)Field name, list of field names, or %. When empty or %, all field names are converted to lowercase
transforms=lowercase
transforms.lowercase.type=solutions.a2.kafka.transforms.ToLowerCaseNameConverter

Chaining Transformations

Multiple transformations can be chained together:

transforms=numberConvert,intervalConvert,lowercase
transforms.numberConvert.type=solutions.a2.kafka.transforms.OraNumberConverter
transforms.intervalConvert.type=solutions.a2.kafka.transforms.OraIntervalConverter
transforms.lowercase.type=solutions.a2.kafka.transforms.ToLowerCaseNameConverter

Transformations are applied in the order listed.