Skip to main content

System Transformers

Introduction

Neosync comes out of the box with 40+ system transformers in order to give you an easy way to get started with anonymizing or generating data. There are two kinds of system transformers:

  1. Generators - these begin with generate_ and do not anonymize existing data. They only generate net-new synthetic data.
  2. Transformers - these begin with transform_ and can anonymize existing data or generate new-new synthetic data based on how you configure it.

Reference

NameTypeCodeDescription
Generate CategoricalstringCodeRandomly selects a value from a defined set of categorical values
Generate EmailstringCodeGenerates a new randomized email address.
Transform EmailstringCodeTransforms an existing email address.
Generate BooleanbooleanCodeGenerates a boolean value at random.
Generate Card Numberint64CodeGenerates a card number.
Generate CitystringCodeRandomly selects a city from a list of predefined US cities.
Generate DefaultanyCodeApplies the predefined default value of a column as specified in the SQL database schema
Generate E164 Phone NumberstringCodeGenerates a Generate phone number in e164 format.
Generate First NamestringCodeGenerates a random first name.
Generate Float64float64CodeGenerates a random float64 value.
Generate Full AddressstringCodeRandomly generates a street address.
Generate Full NamestringCodeGenerates a new full name consisting of a first and last name.
Generate GenderstringCodeRandomly generates one of the following genders: female, male, undefined, nonbinary.
Generate Int64 Phone Numberint64CodeGenerates a new phone number of type int64 with a default length of 10.
Generate Random Int64int64CodeGenerates a random integer value with a default length of 4 unless the Integer Length or Preserve Length parameters are defined.
Generate Last Nameint64CodeGenerates a random last name.
Generate SHA256 HashstringCodeSHA256 hashes a randomly generated value.
Generate SSNstringCodeGenerates a completely random social security numbers including the hyphens in the format xxx-xx-xxxx.
Generate StatestringCodeRandomly selects a US state and returns the two-character state code.
Generate Street AddressstringCodeRandomly generates a street address.
Generate String Phone NumberstringCodeGenerates a Generate phone number and returns it as a string.
Generate Random StringstringCodeCreates a randomly ordered alphanumeric string with a default length of 10 unless the String Length parameter are defined.
Generate Unix Timestampint64CodeRandomly generates a Unix timestamp.
Generate UsernamestringCodeRandomly generates a username
Generate UTC TimestamptimeCodeRandomly generates a UTC timestamp.
Generate UUIDuuidCodeGenerates a new UUIDv4 id.
Generate ZipcodestringCodeRandomly selects a zip code from a list of predefined US zipcodes.
Transform E164 Phone NumberstringCodeTransforms an existing E164 formatted phone number.
Transform First NamestringCodeTransforms an existing first name
Transform Float64float64CodeTransforms an existing float value.
Transform Full NamestringCodeTransforms an existing full name.
Transform Int64 Phone Numberint64CodeTransforms an existing phone number that is typed as an integer
Transform Int64int64CodeTransforms an existing integer value.
Transform Last NamestringCodeTransforms an existing last name.
Transform Phone NumberstringCodeTransforms an existing phone number that is typed as a string.
Transform StringstringCodeTransforms an existing string value.
Transform Character ScramblestringCodeTransforms an existing string value by scrambling the characters while maintaining the format.
PassthroughstringCodePasses the input value through to the destination with no changes.
NullstringCodeInserts a null string instead of the source value.

Generate Categorical

The generate categorical transformer allows a user to define a list of comma-separated categorical string values that Neosync will randomly sample.

For example, the following values: test, me, please

Could produce the following output value: me

Or: please

Configurations

NameDescriptionDefaultExample Output
Categorieslist of comma-separated categorical string values that Neosync will randomly sample.value1,value2value1

Examples

CategoriesExample InputExample Output
falsered,blue,greengreen
falsered,blue,greenred

Generate Email

The generate email transformer generates a new randomized email address in the format:

<username>@<domain>.<top-level-domain>

By default, the transformer randomizes the username, domain and top-level domain while always preserving the email format by retaining the @ and . characters.

For example, the following input value: john@acme.com

Would produce the following output value: ytvub873@gmail.com

Configurations

There are no configurations for this transformer.

Examples

Example Output
f98723uh@gmail.com
9cd@msn.com
mDy@gmail.edu
fweq23f@hotmail.com

Transform Email

The transform email transformer can anonymize an existing email address or generate a new randomized email address in the format:

<username>@<domain>.<top-level-domain>

By default, the transformer randomizes the username, domain and top-level domain while always preserving the email format by retaining the @ and . characters.

For example, the following input value: john@acme.com

Would produce the following output value: ytvub873@gmail.com

Configurations

Depending on your logic, you may want to configure the output email. The transform email transformer has the following configurations:

NameDescriptionDefaultExample InputExample Output
PreserveDomainCarries over the input domain and top-level to the output email address.falsejohn@gmail.comfjf2903@gmail.com
PreserveLengthEnsures the output email address is the same length as the input email address.falsejohn@gmail.comhw98@gmail.edu
Excluded DomainsSpecify a list of comma separated domains to exclude from transformation logic.emptygmail.com,hotmail.comhw98@gmail.edu
Email TypeSpecify how the email should be transformed. Today the options are uuid v4 and fullname. Fullname is not guaranteed to be unique, although it has high cardinality. For unique transformers, it's advised to use uuid v4.uuid v4foo@gmail.comd62bcb6a98ee4316a078852efda21c3d@gmail.com

Examples

There are several ways you can mix-and-match configurations to get different potential email formats. Note that the Excluded Domains List pertains to the transformed emails. If the PreserverDomain is true and there is a domain in the Excluded Domains list, then the default logic would be to not preserve the domain but since we are excluding those domains from the transformation logic via the exclude list, then those domains will be excluded.

Here are some possible combinations:

PreserveLengthPreserveDomainExclude DomainsExample InputExample Output
falsetruegmail.comevis@gmail.comf9nkeuh@ergwer.wewe
truefalsegmail.comf98723uh@gmail.comf98723uh@gmail.com
truetruegmail.comevis@gmail.comf98723uh@weefw.wefw
falsefalsegmail.comevis@gmail.comf98723uh@gmail.com

Generate Boolean

The generate boolean transformer randomly generates a boolean value.

Configurations

There are no configurations for the random boolean transformer.

Examples

Here are some examples of what an output random boolean value may look like.

Example Output
true
false

Generate Card Number

The generate card number transformer generates a new card number that is luhn valid.

By default, the card number transformer generates a random 16 digit card number that is not luhn valid. If you want luhn validation, please set the luhn-check config to true.

Configurations

Depending on your validations, you may want to configure the output card number. The card number transformer has the following configurations:

NameDescriptionDefaultExample Output
Valid LuhnGenerate a card number that can pass luhn validation.true6621238134011099

Examples

Here are some examples of an output card number:

Valid LuhnExample Output
false3627893345931223
true6621238134011099

Generate City

The generate city transformers generates a randomly selected US city. You can see the complete list of cities that are available to be randomly selected here.

If you'd rather not get back a real city value, you can use the Generate Random String Transformer to generate a random string value.

Configurations

There are no configurations for the city transformer.

Examples

Here are some examples of what an output City value may look like.

Example Output
Louisville
Manchester

Generate Default

The generate default transformer automatically applies the predefined default value of a column as specified in the SQL database schema. This means whenever new data is added without specifying a value for this column, the system will insert the default value set for that column in the database.

Generate E164 Phone Number

The generate e164 phone transformer generates a new international phone number including the + sign. By default, the generate e164 transformer generates a random phone number with no hyphens in the format:

+34567890123

TPhone numbers also vary in length with some international phone numbers reaching up to 15 digits in length. You can set the range of the value by setting the min and max params. Here is more information on the e164 format. This transformer also has a min of 9 and a max of 15. If you want to generate a number that is longer than that, you can use the Generate Random int64 transformer

Configurations

Depending on your validations, you may want to configure the output e164 phone number:

NameDescriptionDefaultExample Output
MinMin is the lower range of the a length value.9+29748675
MaxMax is the upper range of a length value.12+2037486752

Examples

There are several ways you can mix-and-match configurations to get different potential phone number formats. Here are some possible combinations:

MinMaxExample Output
912+5209273239
1014+5209273239
1212+52092732323

Generate First Name

The generate first name transformer generates a valid first name from a list of predefined first name values. You can see the entire list of first name value here.

By default, the generate first name transformer randomly picks a first name with a length between 2 and 12.

Configurations

There are no configurations for this transformer.

Examples

There are several ways you can mix-and-match configurations to get different first name formats. Here are some possible combinations:

Example Output
Benjamin
Gregory
Ashley

Generate Float64

The generate float transformer generates a random floating point number.

For example: 32.2432

This transformer supports both positive and negative float numbers with a max precision of 17.

Go float64 adheres to the IEEE 754 standard for double-precision floating-point numbers.

If this is not sufficient, contact us about creating a generator that supports numbers with higher precision.

Configurations

Depending on your validations, you may want to configure the output float. The random float transformer has the following configurations:

NameDescriptionDefault
RandomizeSignRandomly sets the sign of the value.false
MinSpecifies the min range for a generated float value.1.00
MaxSpecifies the max range for a generated float value.100.00
PrecisionSets the precision of the value. For example, a precision of 6 will generate a value such as 42.9812.6

Examples

There are several ways you can mix-and-match configurations to get different potential random float formats.

Note: if randomize sign has been selected, this may cause the generated numbers to exist outside of the configured min/max range.

Here are some possible combinations:

RandomizeSignMinMaxPrecisionExample Output
true2.0035.004-23.84
true4.1219.4337.28
false-30.002.008-15.54219
false-20.0030.00420.19

Generate Full Address

The generate full address transformer generates a randomly selected real full address that exists in the United States. You can see the complete list of full addresses that are available to be randomly selected here.

The full address transformer returns a valid United States address. For example: 123 Main Street Boston, Massachusetts, 02169

Configurations

There are no configurations for the full address transformer.

Examples

Here are some examples of what an output full address value may look like.

Example Output
509 Franklin Street Northeast Washington, DC, 20017
14 Huntingon Street Manchester, CT 06040

Generate Full Name

The generate full name transformer generates a valid full name from a list of predefined full name values. The generated full name is made from a combination of the first and last names transformers.

Configurations

There are no configurations for this transformer.

Examples

Here are some examples of what an output full name value may look like.

Example Output
Edward Marshall
Dante Mayer
Gregory Johnson

Generate Gender

The generate gender transformer randomly selects a gender value from a predefined list of genders. Here is the list:

GenderAbbreviation
malem
femalef
nonbinaryn
undefinedu

By default, the gender transformer does not abbreviate the gender. If you'd like to return an abbreviated gender, pass in the abbreviate config.

Configurations

Depending on your validations, you may want to configure the output gender. The gender transformer has the following configurations:

NameDescriptionDefaultExample Output
AbbreviateAbbreviate will abbreviate the output gender so that it is only one character.falseu

Examples

There are several ways you can mix-and-match configurations to get different full name formats. Here are some possible combinations:

AbbreviateExample Output
falsemale
truef
falsenonbinary

Generate Int64 Phone Number

The generate int64 phone number generates a random 10 digit phone number with a valid US area code and returns it as an int64 type with no hyphens. If you want to return a string or want to include hyphens, check out the Generate String Phone transformer.

For example, the generate int64 phone number transformer could generate the following output value: 5698437232

Configurations

There are no configurations for this transformer.

Examples

Here are some examples of what the output values could look like:

Example Output
5209273239
9378463528

Generate Random Int64

The generate random int64 transformer generates a random integer and returns it as a int64 type.

For example: 6782

Configurations

Depending on your validations, you may want to configure the output float. The random integer transformer has the following configurations:

NameDescriptionDefault
RandomizeSignRandomly sets the sign of the generated value.false
MinSpecifies the min range for a generated int64 value.1
MaxSpecifies the max range for a generated int64 value.40

Examples

There are several ways you can mix-and-match configurations to get different potential random integer formats.

Note: if randomize sign has been selected, this may cause the generated numbers to exist outside of the configured min/max range.

Here are some possible combinations:

RandomizeSignMinMaxExample Output
true1040-23
true-20-3-14
false210054

Generate Last Name

The generate last name transformer generates a valid last name from a list of predefined last name values. You can see the entire list of last name value here..

Configurations

This transformer has no configurations.

Examples

Here are some possible output examples:

Example Output
Dach
Sporer
Rodriguezon

Generate SHA256 Hash

The generate sha256 hash transformer generates a random SHA256 hash and hex encodes the resulting value and returns it as a string.

Configurations

There are no configurations for the hash transformer.

Examples

Here are some examples of what an output hash value may look like.

Example Output
1b836d86806e16bd45164b9d665ce86dac9d9d55bf79d0e771265da9fbf950d1
c74f07e35232c844a6639fef0c82ad093351cfa1a1b458fd2afc44cc19211508C
18dd7ce288e5538fbdd9c736aa9951ddb317e42c0b928e2b4db672414a82f811

Generate SSN

The generate ssn transformer randomly generates a social security number and returns it with hyphens as a string.

For, example: 123-45-6789

Configurations

There are no configurations for the ssn transformer.

Examples

Here are some examples of what an output street address value may look like.

Example Output
892-23-7634
479-82-3224

Generate State

The generate state transformer generates a randomly selected US state. You can see the complete list of states that are available to be randomly selected here..

If you'd rather not get back a real state value, you can use the Random String Transformer to generate a random string value.

Configurations

There are no configurations for the state transformer.

Examples

Here are some examples of what an output state value may look like.

Example Output
Rhode Island
Missouri

Generate Street Address

The generate street address transformer generates a randomly selects a real street address that exists in the United States. You can see the complete list of street addresses that are available to be randomly selected here..

The street address transformer returns a valid United States address. For example: 123 Main Street Boston

Configurations

There are no configurations for the street address transformer.

Examples

Here are some examples of what an output street address value may look like.

Example Output
509 Franklin Street Northeast
14 Huntingon Street

Generate String Phone Number

The generate string phone transformer generates a random string phone number. By default, the string phone transformer generates a random 10 digit phone number with no hyphens.

Configurations

Here the configurations for the Generate String Phone Number Transformer:

NameDescriptionDefaultExample Output
MinMin is the lower range of the a string length. The minimum range is 9.9234232974865
MaxMax is the upper range of a length value. The maximum range is 15.152037486752

Examples

There are several ways you can mix-and-match configurations to get different potential phone number formats. Here are some possible combinations:

MinMaxExample Output
10145209273239
1115520927323912
1212520927323969

Generate Random String

The generate random string transformer generates a random string of alphanumeric characters.

For example: h2983hf28h92

By default, the random string transformer generates a string of 10 characters long.

Configurations

Depending on your validations, you may want to configure the output string. The generate string transformer has the following configurations:

NameDescriptionDefaultExample Output
MinSpecifies the min range for a generated int64 value. This supports negative values.2jn9d
MaxSpecifies the max range for a generated int64 value. This supports negative values.7hd9n93

Examples

There are several ways you can mix-and-match configurations to get different potential random integer formats. Here are some possible combinations:

MinMaxExample Output
27je7R6
12029h23rega9
55h2dni

Generate Unix Timestamp

The generate unix timestamp transformer randomly generates a unix timestamp in UTC timezone and returns back an int64 representation of that timestamp.

By default, the generated timestamp will always be in the past.

Configurations

There are no configurations for this transformer.

Examples

Here are some examples of what an output state value may look like.

Example Output
2524608000
946684800

Generate Username

The generate username transformer generates a random string in the format of <first_initial><last_name>. The last names are pulled from the last name transformer(/transformers/system#generate-last-name).

Configurations

There are no configurations for the state transformer.

Examples

Here are some examples of what an output state value may look like.

Example Output
jdoe
lsmith

Generate UTC Timestamp

The generate utc timestamp transformer randomly generates a utc timestamp in UTC timezone and returns back an time.Time representation of that timestamp.

By default, the generated timestamp will always be in the past.

Configurations

There are no configurations for this transformer.

Examples

Here are some examples of what an output state value may look like.

Example Output
July 8, 2025, 00:00:00 UTC
September 21, 1989, 00:00:00 UTC

Generate UUID

The generate UUID transformer generates a new UUID v4.

For example: 6d871028b072442c9ad9e6e4e223adfa

Configurations

Depending on your validations, you may want to configure the output uuid. The uuid transformer has the following configurations:

NameDescriptionDefaultExample Output
Include hyphensIncludes hyphens in the output UUID. Note: For some databases, such as Postgres, it will automatically convert any UUID without hyphens to having hyphens.false6817d39c-ea4f-45ec-a81c-bc0801355576

Examples

Here are some example UUID values that the uuid transformer can generate:

Include HyphensExample Output
false53ef1f16cd0d455cb45c4cb6434ae807
trueab6b676b-0d0e-4e38-b98a-3935a832da7d

Generate Zipcode

The generate zipcode transformer generates a randomly selected US zipcode. You can see the complete list of zipcodes that are available to be randomly selected here..

If you'd rather not get back a real zipcode value, you can use the Random String Transformer to generate a random string value.

Configurations

There are no configurations for the zipcode transformer.

Examples

Here are some examples of what an output zipcode value may look like.

Example Output
27563
90237

Transform E164 Phone Number

The transform e164 phone transformer can anonymize an existing e164 phone number or completely generate a new one. It returns a string value with the format +<number>.

For example, the following input value: +7829828714

Could produce the following output value: +5698437232

E164 Phone numbers vary in length with some international phone numbers reaching up to 15 digits in length. You can set this transformer to respect the length of the input value in order maintain the same shape as the input value.

Configurations

Depending on your validations, you may want to configure the output e164 phone number. The transform e164 phone number transformer has the following configurations:

NameDescriptionDefaultExample InputExample Output
Preserve LengthPreserve Length will ensure that the output e164 phone number is the same length as the input phone number. If set to false, it will generate a value between 9 and 15 characters long.false+8923786243+290374867526

Examples

Here are some examples of what the transform e164 phone number transformer can output:

Preserve LengthExample InputExample Output
false+2890923784+520927392
true+62890923784+52092732393

Transform First Name

The transform first name transformer generates a valid first name from a list of predefined first name values. You can see the entire list of first name value here..

By default, the first name transformer generates a first name of random length. To preserve the length of the input first name, you can set the preserveLength config.

Configurations

Depending on your validations, you may want to configure the output first name. The first name transformer has the following configurations:

NameDescriptionDefaultExample InputExample Output
PreserveLengthPreserve Length will ensure that the output first name is the same length as the input first name. The preserveLength config only preserves names up to 12 characters long.falseJohnathanBill

Examples

Here are some examples of what the transform first name transformer can output:

PreserveLengthExample InputExample Output
falseJoeBenjamin
trueFrankDante

Transform Float64

The transform float transformer can anonymize an existing float64 value or generate a completely random floating point number.

For example: 32.2432

The params randomizationRangeMin and randomizationRangeMax set an upper and lower bound around the value that you want to anonymize relative to the input. For example, if the input value is 10, and you set the randomizationRangeMin value to 5, then the minimum will be 5. And if you set the randomizationRangeMax to 5, then the maximum will be 15 ( 10 + 5 = 15).

Configurations

Depending on your validations, you may want to configure the output float. The random float transformer has the following configurations:

NameDescriptionDefault
Relative Range MinSets the lower bound of a range for the input value.20.00
Relative Range MaxSets the upper bound of a range for the input value.50.00

Examples

There are several ways you can mix-and-match configurations to get different potential random float formats. Here are some possible combinations:

Randomization Range MinRandomization Range MaxExample InputExample Output
102027.2317.248
14292.344-9.24
510-8.23-4.19

Transform Full Name

The transform full name transformer generates a valid full name from a list of predefined full name values. The generated full name is made from a combination of the first and last names transformers.

By default, the full name transformer generates a full name of random length. To preserve the length of the input full name, you can set the preserveLength config.

Configurations

Depending on your validations, you may want to configure the output full name. The full name transformer has the following configurations:

NameDescriptionDefaultExample InputExample Output
PreserveLengthPreserve Length will ensure that the output full name is the same length as the input full name by preserving the length of the first and last names. The preserveLength config only preserves first and/or last names up to 12 characters long. So the max full name length is 25 characters.falseJohnBill

Examples

There are several ways you can mix-and-match configurations to get different full name formats. Here are some possible combinations:

PreserveLengthExample InputExample Output
falseJoe SmithEdward Marshall
trueFrank JonesDante Mayer
falseAidan BellGregory Johnson

Transform Int64 Phone Number

The transform int64 phone transformer can anonymize an existing phone number or completely generate a new one. By default, the transform int64 phone number transformer generates a random 10 digit phone number.

For example, the following input value: 7829828714

Would produce the following output value: 5698437232

You can see we generated a new phone integer value that can be used as an integer phone number. Also, note that we don't include hyphens in this transformer since the output type is an integer.

#Configurations

Depending on your validations, you may want to configure the output phone number.

NameDescriptionDefaultExample InputExample Output
PreserveLengthPreserve Length will ensure that the output phone number is the same length as the input phone number.false8923877862432903748675392

Examples

Here are some possible example output values:

PreserveLengthExample InputExample Output
false28909237845209273239
true38393049576395745371

Transform Int64

The random integer transformer generates a random integer.

For example: 6782

Configurations

Depending on your validations, you may want to configure the output integer. The random integer transformer has the following configurations:

NameDescriptionDefault
Relative Range MinSets the lower bound of a range relative to the input value.20
Relative Range MaxSets the upper bound of a range relative to the input value.50

Examples

There are several ways you can mix-and-match configurations to get different potential random int64 values. Here are some possible combinations:

Relative Range MinRelative Range MaxExample InputExample Output
551015
10702391
20903027

Transform Last Name

The transform last name transformer generates a valid last name from a list of predefined last name values. You can see the entire list of last name value here..

By default, the last name transformer generates a last name of random length. To preserve the length of the input last name, you can set the preserveLength config.

Configurations

Depending on your validations, you may want to configure the output last name. The last name transformer has the following configurations:

NameDescriptionDefaultExample InputExample Output
PreserveLengthPreserve Length will ensure that the output last name is the same length as the input last name. The preserveLength config only preserves names up to 12 characters long.falseHillsKunze

Examples

There are several ways you can mix-and-match configurations to get different last name formats. Here are some possible combinations:

PreserveLengthExample InputExample Output
falseLeiDach
trueLittelSporer
falseJohnsonstonRodriguezon

Transform Phone Number

The transform phone transformer can anonymize an existing phone number or completely generate a new one. This transformer specifically takes a string value and returns a string value.

By default, the transform phone transformer generates a random 10 string value phone number with no hyphens.

For example, the following input value: 7829828714

Would produce the following output value: 5698437232

Configurations

Depending on your validations, you may want to configure the output phone number. Here are the configurations for the transform string phone number transformer.

NameDescriptionDefaultExample InputExample Output
PreserveLengthPreserve Length will ensure that the output phone number is the same length as the input phone number.false892387243786243290374867526392

Examples

There are several ways you can mix-and-match configurations to get different potential phone number formats. Here are some possible combinations:

PreserveLengthExample InputExample Output
false2890923784520927323239
true28909237845209223539

Transform String

The random string transformer generates a random string of alphanumeric characters.

For example: h2983hf28h92

By default, the random string transformer generates a string of 10 characters long.

Configurations

Depending on your validations, you may want to configure the output string. The random string transformer has the following configurations:

NameDescriptionDefaultExample InputExample Output
Preserve LengthPreserves the length of the input integer to the output string.falsehello9Fau3

Examples

There are several ways you can mix-and-match configurations to get different potential random integer formats. Here are some possible combinations:

PreserveLengthExample InputExample Output
falsebillje7R6
trueloremi1NMe

Transform Character Scramble

Transforms a string value with characters into an anonymized version of that string value while preserving spaces and capitalization. Letters will be replaced with letters, numbers with numbers and non-number or letter ASCII characters such as !&* with other characters.

For example:

Original: Hello World 123!$% Substituted: Ifmmp Xpsme 234@%^

Note that this does not work for hex values: 0x00 -> 0x1F such as chinese characters.

Configurations

NameDescriptionDefaultExample InputExample Output
RegexA regular expression to match a part of the string to scramble. If no regex is specified that we will scramble the entire string.emptyellohello -> hmato

Examples

There are several ways you can mix-and-match configurations to get different potential random integer formats. Here are some possible combinations:

RegexExample InputExample Output
helloworlddidlenfioq
elloHello World!Hjiqs World!
Hello 12Hello 1234Praji 2834

Passthrough

The passthrough transformer simplify passes the input data out to the output without making any modifications to it. This is useful in many circumstances but cautious of accidentally leaking sensitive data through this transformer.

Null

The null transformer simply returns a null value. This may be useful if you a column that can't be null but don't have a specific value that you want to insert.

Configurations

There are no configurations for the null transformer.

Examples

Here are some examples of what an output null value may look like.

Example InputExample Output
N/Anull

Works-in-progress

This section is for detailing what we have limited or in-progress support for in regards to data transformations.

Array data types

Neosync has limited support for array data types today.

  1. Passthrough - Array data types can be set to passthrough and have their values directly passed through from the source to the destination.
  2. Null - If the column is nullable, this transformer can be safely set.
  3. Default - If the column has a default set, this transformer can be set to allow the column be set to its default state.
  4. Javascript Code - The JS code transformer has support for array data types as the logic is effectively up to the function's implementation.

Foreign Keys

Neosync has limited support for foreign keys and is a feature that is in active development. Any primary key that is foreign keyed into another table must be set to passthrough for it to effectively work. This will change in an upcoming release that adds foreign key support to all foreign key columns and transformers.

Given this, it's worth noting that not all transformers support unique constraints and may generate the same value. It is generally safe to use the uuid transformer as that will theoretically always generate a new unique value.