field.convert
Convert the type of a field.
Description
Convert takes the field of one type and converts it into another type (e.g. string to integer).
The applicable types are string, int, float and bool. Converting can be done between any combination of types. Note that
booleans will be converted to numeric values 1 (true) and 0 (false). Processor is only applicable to .Key, .Payload.Before
and .Payload.After prefixes, and only applicable if said fields contain structured data.
If the record contains raw JSON data, then use the processor json.decode
to parse it into structured data first.
Configuration parameters
- YAML
- Table
version: 2.2
pipelines:
- id: example
status: running
connectors:
# define source and destination ...
processors:
- id: example
plugin: "field.convert"
settings:
# Field is the target field that should be converted. Note that you
# can only convert fields in structured data under `.Key` and
# `.Payload`.
# For more information about the format, see [Referencing
# fields](https://conduit.io/docs/using/processors/referencing-fields).
# Type: string
field: ""
# Whether to decode the record key using its corresponding schema from
# the schema registry.
# Type: bool
sdk.schema.decode.key.enabled: "true"
# Whether to decode the record payload using its corresponding schema
# from the schema registry.
# Type: bool
sdk.schema.decode.payload.enabled: "true"
# Whether to encode the record key using its corresponding schema from
# the schema registry.
# Type: bool
sdk.schema.encode.key.enabled: "true"
# Whether to encode the record payload using its corresponding schema
# from the schema registry.
# Type: bool
sdk.schema.encode.payload.enabled: "true"
# Type is the target field type after conversion, available options
# are: `string`, `int`, `float`, `bool`, `time`.
# Type: string
type: ""
| Name | Type | Default | Description |
|---|---|---|---|
field | string | null | Field is the target field that should be converted.
Note that you can only convert fields in structured data under For more information about the format, see Referencing fields. |
sdk.schema.decode.key.enabled | bool | true | Whether to decode the record key using its corresponding schema from the schema registry. |
sdk.schema.decode.payload.enabled | bool | true | Whether to decode the record payload using its corresponding schema from the schema registry. |
sdk.schema.encode.key.enabled | bool | true | Whether to encode the record key using its corresponding schema from the schema registry. |
sdk.schema.encode.payload.enabled | bool | true | Whether to encode the record payload using its corresponding schema from the schema registry. |
type | string | null | Type is the target field type after conversion, available options are: |
Examples
Convert int to time
This example takes an int in field .Payload.After.createdAt and parses it as a unix timestamp into a time.Time value.
Configuration parameters
- YAML
- Table
version: 2.2
pipelines:
- id: example
status: running
connectors:
# define source and destination ...
processors:
- id: example
plugin: "field.convert"
settings:
field: ".Payload.After.createdAt"
type: "time"
| Name | Value |
|---|---|
field | .Payload.After.createdAt |
type | time |
Record difference
Before | After | ||||
1 | { | 1 | { | ||
2 | "position": null, | 2 | "position": null, | ||
3 | "operation": "create", | 3 | "operation": "create", | ||
4 | "metadata": null, | 4 | "metadata": null, | ||
5 | "key": { | 5 | "key": { | ||
6 | "id": 123.345 | 6 | "id": 123.345 | ||
7 | }, | 7 | }, | ||
8 | "payload": { | 8 | "payload": { | ||
9 | "before": null, | 9 | "before": null, | ||
10 | "after": { | 10 | "after": { | ||
11 | - | "createdAt": 1704198896123456800 | 11 | + | "createdAt": "2024-01-02T12:34:56.123456789Z" |
12 | } | 12 | } | ||
13 | } | 13 | } | ||
14 | } | 14 | } | ||
Convert float to string
This example takes the float in field .Key.id and changes its data type to string.
Configuration parameters
- YAML
- Table
version: 2.2
pipelines:
- id: example
status: running
connectors:
# define source and destination ...
processors:
- id: example
plugin: "field.convert"
settings:
field: ".Key.id"
type: "string"
| Name | Value |
|---|---|
field | .Key.id |
type | string |
Record difference
Before | After | ||||
1 | { | 1 | { | ||
2 | "position": null, | 2 | "position": null, | ||
3 | "operation": "update", | 3 | "operation": "update", | ||
4 | "metadata": null, | 4 | "metadata": null, | ||
5 | "key": { | 5 | "key": { | ||
6 | - | "id": 123.345 | 6 | + | "id": "123.345" |
7 | }, | 7 | }, | ||
8 | "payload": { | 8 | "payload": { | ||
9 | "before": null, | 9 | "before": null, | ||
10 | "after": { | 10 | "after": { | ||
11 | "foo": "bar" | 11 | "foo": "bar" | ||
12 | } | 12 | } | ||
13 | } | 13 | } | ||
14 | } | 14 | } | ||
Convert int to bool
This example takes the int in field .Payload.After.done and changes its data type to bool.
Configuration parameters
- YAML
- Table
version: 2.2
pipelines:
- id: example
status: running
connectors:
# define source and destination ...
processors:
- id: example
plugin: "field.convert"
settings:
field: ".Payload.After.done"
type: "bool"
| Name | Value |
|---|---|
field | .Payload.After.done |
type | bool |
Record difference
Before | After | ||||
1 | { | 1 | { | ||
2 | "position": null, | 2 | "position": null, | ||
3 | "operation": "update", | 3 | "operation": "update", | ||
4 | "metadata": null, | 4 | "metadata": null, | ||
5 | "key": { | 5 | "key": { | ||
6 | "id": "123" | 6 | "id": "123" | ||
7 | }, | 7 | }, | ||
8 | "payload": { | 8 | "payload": { | ||
9 | "before": null, | 9 | "before": null, | ||
10 | "after": { | 10 | "after": { | ||
11 | - | "done": 1 | 11 | + | "done": true |
12 | } | 12 | } | ||
13 | } | 13 | } | ||
14 | } | 14 | } | ||
Convert string to int
This example takes the string in field .Key.id and changes its data type to int.
Configuration parameters
- YAML
- Table
version: 2.2
pipelines:
- id: example
status: running
connectors:
# define source and destination ...
processors:
- id: example
plugin: "field.convert"
settings:
field: ".Key.id"
type: "int"
| Name | Value |
|---|---|
field | .Key.id |
type | int |
Record difference
Before | After | ||||
1 | { | 1 | { | ||
2 | "position": null, | 2 | "position": null, | ||
3 | "operation": "update", | 3 | "operation": "update", | ||
4 | "metadata": null, | 4 | "metadata": null, | ||
5 | "key": { | 5 | "key": { | ||
6 | - | "id": "123" | 6 | + | "id": 123 |
7 | }, | 7 | }, | ||
8 | "payload": { | 8 | "payload": { | ||
9 | "before": null, | 9 | "before": null, | ||
10 | "after": { | 10 | "after": { | ||
11 | "foo": "bar" | 11 | "foo": "bar" | ||
12 | } | 12 | } | ||
13 | } | 13 | } | ||
14 | } | 14 | } | ||
