Skip to main content

Transformers

A transformer is useful to change/hide the value of a specified column. Replibyte provides pre-made transformers. You can also build your own Transformer in web assembly.

note

Examples are with SQL input and output to reflect the change made by the transformer.

To list the transformers available use

replibyte -c conf.yaml transformer list

name | description
-----------------+--------------------------------------------------------------------------------------------
email | Generate an email address (string only). [[email protected]]->[[email protected]]
first-name | Generate a first name (string only). [Lucas]->[Georges]
phone-number | Generate a phone number (string only).
random | Randomize value but keep the same length (string only). [AAA]->[BBB]
keep-first-char | Keep only the first character of the column.
transient | Does not modify the value.
credit-card | Generate a credit card number (string only).
redacted | Obfuscate your sensitive data (string only). [4242 4242 4242 4242]->[424****************]
...

Random​

Randomize value but keep the same length.

Examples​

source:
connection_uri: $DATABASE_URL
transformers:
- database: public
table: my_table
columns:
- name: description
transformer_name: random
# ...

SQL input:

INSERT INTO public.my_table (description) VALUE ('Hello World');

SQL output:

Random string value of the same length.

INSERT INTO public.my_table (description) VALUE ('Awdka Qdkqd');

First name​

Generate a fake first name.

Examples​

source:
connection_uri: $DATABASE_URL
transformers:
- database: public
table: my_table
columns:
- name: first_name
transformer_name: first-name
# ...

SQL input:

INSERT INTO public.my_table (first_name) VALUE ('Lucas');

SQL output:

Fake name from a dictionary of names.

INSERT INTO public.my_table (first_name) VALUE ('Georges');

Email​

Replace the string value by a fake email address.

Examples​

source:
connection_uri: $DATABASE_URL
transformers:
- database: public
table: my_table
columns:
- name: contact_email
transformer_name: email
# ...

SQL input:

INSERT INTO public.my_table (contact_email) VALUE ('[email protected]');

SQL output:

Fake name from a dictionary of names.

INSERT INTO public.my_table (contact_email) VALUE ('[email protected]');

Keep first character​

Keep only the first character of the column.

Examples​

source:
connection_uri: $DATABASE_URL
transformers:
- database: public
table: my_table
columns:
- name: first_name
transformer_name: keep-first-char
# ...

SQL input:

INSERT INTO public.my_table (first_name) VALUE ('Lucas');

SQL output:

INSERT INTO public.my_table (first_name) VALUE ('L');

Phone number​

Generate a phone number. (US only at the moment)

Examples​

source:
connection_uri: $DATABASE_URL
transformers:
- database: public
table: my_table
columns:
- name: contact_phone
transformer_name: phone-number
# ...

SQL input:

INSERT INTO public.my_table (contact_phone) VALUE ('+123456789');

SQL output:

INSERT INTO public.my_table (contact_phone) VALUE ('+356433821');

Credit-card​

Generate a credit card number

Examples​

source:
connection_uri: $DATABASE_URL
transformers:
- database: public
table: my_table
columns:
- name: payment_card
transformer_name: card-number
# ...

SQL input:

INSERT INTO public.my_table (payment_card) VALUE ('1234123412341234');

SQL output:

INSERT INTO public.my_table (payment_card) VALUE ('5678567856785678');

Redacted​

Obfuscate your sensitive data.

Examples​

source:
connection_uri: $DATABASE_URL
transformers:
- database: public
table: my_table
columns:
- name: payment_card
transformer_name: redacted
# ...

SQL input:

INSERT INTO public.my_table (payment_card) VALUE ('1234 1234 1234 1234');

SQL output:

INSERT INTO public.my_table (payment_card) VALUE ('1234***************');

Redacted transformer has more options, like the width and the character to use

source:
connection_uri: $DATABASE_URL
transformers:
- database: public
table: employees
columns:
- name: last_name
transformer_name: redacted
transformer_options:
character: '#'
width: 20
# ...

SQL input:

INSERT INTO public.my_table (payment_card) VALUE ('1234 1234 1234 1234');

SQL output:

INSERT INTO public.my_table (payment_card) VALUE ('123####################');

Transient​

Does not change anything (good for testing purpose)

Custom with Web Assembly (wasm)​

Are you ready to get into the matrix? Take a look here 👀

Nested fields​

note

Support MongoDB only.

Embedded sub-document (object)​

For a document looking like this for which you want to transform the email and phone_number fields

{
"contact": {
"email": "[email protected]",
"phone_number": "123456"
}
}

The configuration file to use is:

source:
connection_uri: $DATABASE_URL
transformers:
- database: my_database
table: my_collection
columns:
- name: contact.email
transformer_name: email
- name: contact.phone_number
transformer_name: phone-number

Embedded array of documents (array of objects)​

For a document looking like this for which you want to transform the email and phone_number fields

{
"contacts": [
{
"email": "[email protected]",
"phone_number": "123456"
},
{
"email": "[email protected]",
"phone_number": "123456"
}
]
}

The configuration file to use is:

source:
connection_uri: $DATABASE_URL
transformers:
- database: my_database
table: my_collection
columns:
- name: contacts.$[].email
transformer_name: email
- name: contacts.$[].phone_number
transformer_name: phone-number