RandomDate
Generate a random date in a specified interval.
Parameters¶
Name | Description | Default | Required | Supported DB types |
---|---|---|---|---|
column | Name of the column to be affected | Yes | date, timestamp, timestamptz | |
min | The minimum threshold date for the random value. The format depends on the column type. | Yes | - | |
max | The maximum threshold date for the random value. The format depends on the column type. | Yes | - | |
truncate | Truncate the date to the specified part (nanosecond , microsecond , millisecond , second , minute , hour , day , month , year ). The truncate operation is not applied by default. |
No | - | |
keep_null | Indicates whether NULL values should be replaced with transformed values or not | true |
No | - |
engine | The engine used for generating the values [random , hash ]. Use hash for deterministic generation |
random |
No | - |
Dynamic parameters¶
Parameter | Supported types |
---|---|
min | date, timestamp, timestamptz |
max | date, timestamp, timestamptz |
Description¶
The RandomDate
transformer generates a random date within the provided interval, starting from min
to max
. It
can also perform date truncation up to the specified part of the date. The format of dates in the min
and max
parameters must adhere to PostgreSQL types, including DATE
, TIMESTAMP WITHOUT TIMEZONE
,
or TIMESTAMP WITH TIMEZONE
.
Note
The value of min
and max
parameters depends on the column type. For example, for the date
column, the value
should be in the format YYYY-MM-DD
, while for the timestamp
column, the value should be in the format
YYYY-MM-DD HH:MM:SS
or YYYY-MM-DD HH:MM:SS.SSSSSS
. The timestamptz
column requires the value to be in the
format YYYY-MM-DD HH:MM:SS.SSSSSS+HH:MM
. Read more about date/time formats in
the PostgreSQL documentation.
The behaviour for NULL
values can be configured using the keep_null
parameter. The engine
parameter allows you to
choose between random and hash engines for generating values. Read more about the engines in
the Transformation engines section.
Example: Generate modifieddate
¶
In the following example, a random timestamp without timezone is generated for the modifieddate
column within the
range from 2011-05-31 00:00:00
to 2013-05-31 00:00:00
, and the part of the random value after day
is truncated.
- schema: "sales"
name: "salesorderdetail"
transformers:
- name: "RandomDate"
params:
column: "modifieddate"
keep_null: false
min: "2011-05-31 00:00:00"
max: "2013-05-31 00:00:00"
truncate: "day"
Result
Column | OriginalValue | TransformedValue |
---|---|---|
modifieddate | 2014-06-30 00:00:00 | 2012-07-27 00:00:00 |
Example: Generate hiredate
based on birthdate
using two transformations¶
In this example, the RandomDate
transformer generates a random date for the birthdate
column within the
range now - 50 years
to now - 18 years
. The hire date is generated based on the birthdate
, ensuring that the
employee is at least 18 years old when hired.
- schema: "humanresources"
name: "employee"
transformers:
- name: "RandomDate"
params:
column: "birthdate"
min: '{{ now | tsModify "-50 years" | .EncodeValue }}' # 1994
max: '{{ now | tsModify "-18 years" | .EncodeValue }}' # 2006
- name: "RandomDate"
params:
column: "hiredate"
truncate: "month"
max: "{{ now | .EncodeValue }}"
dynamic_params:
min:
column: "birthdate"
template: '{{ .GetValue | tsModify "18 years" | .EncodeValue }}' # min age 18 years
Result:
Column | OriginalValue | TransformedValue |
---|---|---|
birthdate | 1969-01-29 | 1985-10-29 |
hiredate | 2009-01-14 | 2023-01-01 |