This is an automated email from the ASF dual-hosted git repository.
mcasters pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hop.git
The following commit(s) were added to refs/heads/main by this push:
new 6583915b6c [Parquet Input/Output] Add comprehensive support for
Parquet Logical Types, fixes #5947 (#6186)
6583915b6c is described below
commit 6583915b6cd22aa52d45eb93860b4c4a2fa8b9a5
Author: jbs-atolcd <[email protected]>
AuthorDate: Mon Dec 15 16:50:00 2025 +0100
[Parquet Input/Output] Add comprehensive support for Parquet Logical
Types, fixes #5947 (#6186)
This commit introduces significant improvements to the Parquet Input and
Output transforms by implementing comprehensive support for Parquet's Logical
Types.
Previously, the transforms relied primarily on primitive types, leading to
conversions issues and errors with data when handling complex types, such as
Timestamps..
Key Changes & Features:
1. Parquet Input:
* Logical Type Mapping: Refactors the field discovery to use
`LogicalTypeAnnotation` (instead of only primitive type), enabling correct
mapping for semantic types.
* Timestamp/Date Precision: Implements a conversion mechanism to map
Parquet's timestamps units (MILLIS, MICROS..) to Hop's `TYPE_TIMESTAMP` and
`TYPE_DATE`, preserving precision and handling UTC adjustments.
* JSON Support: Adds explicit support for the JSON Logical Type, converting
the Parquet binary/string data into Hop's `TYPE_JSON` object.
* Decimal Handling: Uses precision and scale from
`DecimalLogicalTypeAnnotation` to correctly convert binary/long Parquet
decimals into Hop's `TYPE_BIGNUMBER`.
2. Parquet Output:
* Date/Timestamp Consistency: Ensures that Hop's `TYPE_DATE` and
`TYPE_TIMESTAMP` are consistently converted to a `LONG` representation with the
Parquet `timestampMillis` logical annotation, which is the most compatible
format.
* Schema Mapping: Maps Hop's `TYPE_JSON` and `TYPE_UUID` to Parquet
`STRING` types in the schema definition.
Testing and Validation:
* Test Data Enrichment: The test dataset (`golden-parquet-input.json`) was
extended to include new fields: `isActive` (Boolean), `registrationTimestamp`
(Timestamp), and `metadataJson` (JSON), ensuring the new types are covered
end-to-end.
* Unit Test Update: The unit test configuration (`0029-parquet-input
UNIT.json`) was updated to map and validate the new fields, confirming the
correct functionality of the transform.
This resolves a major limitation regarding data fidelity when dealing with
common modern Parquet schemas.
---
.../java/org/apache/hop/core/row/IValueMeta.java | 3 +
.../transforms/0029-parquet-input.hpl | 40 ++--
.../transforms/0029-parquet-output.hpl | 48 ++++-
.../transforms/datasets/golden-parquet-input.csv | 202 ++++++++++-----------
.../transforms/files/customers-100.txt | 202 ++++++++++-----------
.../metadata/dataset/golden-parquet-input.json | 64 +++++--
.../unit-test/0029-parquet-input UNIT.json | 26 ++-
.../parquet/transforms/input/ParquetInputMeta.java | 52 ++++--
.../transforms/input/ParquetRowConverter.java | 5 +-
.../transforms/input/ParquetValueConverter.java | 102 ++++++++++-
.../parquet/transforms/output/ParquetOutput.java | 49 ++++-
11 files changed, 528 insertions(+), 265 deletions(-)
diff --git a/core/src/main/java/org/apache/hop/core/row/IValueMeta.java
b/core/src/main/java/org/apache/hop/core/row/IValueMeta.java
index 072cb48d52..cde4687d83 100644
--- a/core/src/main/java/org/apache/hop/core/row/IValueMeta.java
+++ b/core/src/main/java/org/apache/hop/core/row/IValueMeta.java
@@ -199,6 +199,9 @@ public interface IValueMeta extends Cloneable {
/** Value type indicating that the value contains an Avro Record */
int TYPE_AVRO = 20;
+ /** Value type indicating that the value contains an UUID */
+ int TYPE_UUID = 32;
+
/** The Constant typeCodes. */
String[] typeCodes =
new String[] {
diff --git a/integration-tests/transforms/0029-parquet-input.hpl
b/integration-tests/transforms/0029-parquet-input.hpl
index 7d288daa11..260b18f970 100644
--- a/integration-tests/transforms/0029-parquet-input.hpl
+++ b/integration-tests/transforms/0029-parquet-input.hpl
@@ -67,26 +67,21 @@ limitations under the License.
<method>none</method>
<schema_name/>
</partitioning>
- <filter>
- <filterfiletype>all_files</filterfiletype>
- </filter>
<doNotFailIfNoFile>N</doNotFailIfNoFile>
- <rownum>N</rownum>
- <isaddresult>Y</isaddresult>
- <filefield>N</filefield>
- <rownum_field/>
- <filename_Field/>
- <wildcard_Field/>
- <exclude_wildcard_Field/>
<dynamic_include_subfolders>N</dynamic_include_subfolders>
- <limit>0</limit>
<file>
- <name>${java.io.tmpdir}/it/parquet/customers.parquet.snappy</name>
- <filemask/>
- <exclude_filemask/>
<file_required>N</file_required>
<include_subfolders>N</include_subfolders>
+ <name>${java.io.tmpdir}/it/parquet/customers.parquet.snappy</name>
</file>
+ <filefield>N</filefield>
+ <filter>
+ <filterfiletype>all_files</filterfiletype>
+ </filter>
+ <isaddresult>Y</isaddresult>
+ <limit>0</limit>
+ <raiseAnExceptionIfNoFile>N</raiseAnExceptionIfNoFile>
+ <rownum>N</rownum>
<attributes/>
<GUI>
<xloc>160</xloc>
@@ -156,6 +151,21 @@ limitations under the License.
<target_field>state</target_field>
<target_type>String</target_type>
</field>
+ <field>
+ <source_field>isActive</source_field>
+ <target_field>isActive</target_field>
+ <target_type>Boolean</target_type>
+ </field>
+ <field>
+ <source_field>registrationTimestamp</source_field>
+ <target_field>registrationTimestamp</target_field>
+ <target_type>Timestamp</target_type>
+ </field>
+ <field>
+ <source_field>metadataJson</source_field>
+ <target_field>metadataJson</target_field>
+ <target_type>JSON</target_type>
+ </field>
</fields>
<filename_field>filename</filename_field>
<attributes/>
@@ -194,7 +204,9 @@ limitations under the License.
</partitioning>
<fields>
<field>
+ <length>-2</length>
<name>filename</name>
+ <precision>-2</precision>
</field>
<select_unspecified>N</select_unspecified>
</fields>
diff --git a/integration-tests/transforms/0029-parquet-output.hpl
b/integration-tests/transforms/0029-parquet-output.hpl
index 4fabba275a..a99fe28f8b 100644
--- a/integration-tests/transforms/0029-parquet-output.hpl
+++ b/integration-tests/transforms/0029-parquet-output.hpl
@@ -101,8 +101,19 @@ limitations under the License.
<source_field>state</source_field>
<target_field>state</target_field>
</field>
+ <field>
+ <source_field>isActive</source_field>
+ <target_field>isActive</target_field>
+ </field>
+ <field>
+ <source_field>registrationTimestamp</source_field>
+ <target_field>registrationTimestamp</target_field>
+ </field>
+ <field>
+ <source_field>metadataJson</source_field>
+ <target_field>metadataJson</target_field>
+ </field>
</fields>
- <filename_split_size>1000000</filename_split_size>
<filename_base>${java.io.tmpdir}/it/parquet/customers</filename_base>
<filename_create_parent_folders>Y</filename_create_parent_folders>
<filename_datetime_format>yyyyMMdd-HHmmss</filename_datetime_format>
@@ -112,6 +123,7 @@ limitations under the License.
<filename_include_datetime>N</filename_include_datetime>
<filename_include_split>N</filename_include_split>
<filename_include_time>N</filename_include_time>
+ <filename_split_size>1000000</filename_split_size>
<row_group_size>20000</row_group_size>
<version>1.0</version>
<attributes/>
@@ -139,6 +151,7 @@ limitations under the License.
<enclosure>"</enclosure>
<header>Y</header>
<buffer_size>50000</buffer_size>
+ <schemaDefinition/>
<lazy_conversion>Y</lazy_conversion>
<add_filename_result>N</add_filename_result>
<parallel>N</parallel>
@@ -255,6 +268,39 @@ limitations under the License.
<precision>-1</precision>
<trim_type>none</trim_type>
</field>
+ <field>
+ <name>isActive</name>
+ <type>Boolean</type>
+ <format/>
+ <currency>$</currency>
+ <decimal>,</decimal>
+ <group> </group>
+ <length>-1</length>
+ <precision>-1</precision>
+ <trim_type>none</trim_type>
+ </field>
+ <field>
+ <name>registrationTimestamp</name>
+ <type>Timestamp</type>
+ <format>yyyy-MM-dd HH:mm:ss.SSS</format>
+ <currency>$</currency>
+ <decimal>,</decimal>
+ <group> </group>
+ <length>-1</length>
+ <precision>-1</precision>
+ <trim_type>none</trim_type>
+ </field>
+ <field>
+ <name>metadataJson</name>
+ <type>JSON</type>
+ <format/>
+ <currency>$</currency>
+ <decimal>,</decimal>
+ <group> </group>
+ <length>64</length>
+ <precision>-1</precision>
+ <trim_type>none</trim_type>
+ </field>
</fields>
<attributes/>
<GUI>
diff --git a/integration-tests/transforms/datasets/golden-parquet-input.csv
b/integration-tests/transforms/datasets/golden-parquet-input.csv
index cb21054f8a..539861280a 100644
--- a/integration-tests/transforms/datasets/golden-parquet-input.csv
+++ b/integration-tests/transforms/datasets/golden-parquet-input.csv
@@ -1,101 +1,101 @@
-id,name,firstname,zip,city,birthdate,street,housenr,stateCode,state
-1,jwcdf-name,fsj-firstname,13520,oem-city,1954/02/07,amrb-street,145,AK,ALASKA
-2,flhxu-name,tum-firstname,17520,buo-city,1966/04/24,wfyz-street,96,GA,GEORGIA
-3,xthfg-name,gfe-firstname,12560,vtz-city,1990/01/11,doxx-street,46,NJ,NEW
JERSEY
-4,ulzrz-name,bnl-firstname,11620,prz-city,1966/08/02,bxqn-street,104,NY,NEW
YORK
-5,oxhyr-name,onx-firstname,15180,bpn-city,1970/11/14,pksn-street,133,IN,INDIANA
-6,fiqjz-name,sce-firstname,16020,fnn-city,1954/09/24,wbhg-street,35,MD,MARYLAND
-7,tkiat-name,xti-firstname,12720,stt-city,1966/08/11,tvnf-street,21,PA,PENNSYLVANIA
-8,kljcz-name,uqd-firstname,13340,ntt-city,1987/01/15,jyje-street,10,PW,PALAU
-9,pgunz-name,hcm-firstname,16680,gxh-city,1970/11/08,shbe-street,184,NC,NORTH
CAROLINA
-10,oyjha-name,uhj-firstname,18880,uyg-city,1966/04/10,bjgw-street,176,AR,ARKANSAS
-11,igxbd-name,uph-firstname,13480,ndh-city,1962/12/03,jdcd-street,151,NH,NEW
HAMPSHIRE
-12,vnaov-name,wha-firstname,13120,egm-city,1954/03/28,hpep-street,20,CA,CALIFORNIA
-13,dauuz-name,hwg-firstname,13740,khn-city,1958/05/15,etqx-street,5,OK,OKLAHOMA
-14,gkuuo-name,kkb-firstname,13560,xdt-city,1962/04/07,sdoj-street,35,MT,MONTANA
-15,wdhze-name,jjk-firstname,16900,due-city,1970/07/17,pmmu-street,174,AS,AMERICAN
SAMOA
-16,ncayz-name,ynb-firstname,15720,lxj-city,1974/04/27,mdtb-street,109,MA,MASSACHUSETTS
-17,rdjin-name,hhu-firstname,14480,lpc-city,1958/11/16,wxik-street,145,KY,KENTUCKY
-18,nxzij-name,bdl-firstname,10740,avx-city,1958/02/20,nybz-street,138,WI,WISCONSIN
-19,xgrzc-name,dxw-firstname,18900,vpq-city,1990/11/16,wzjh-street,58,ME,MAINE
-20,ehgrn-name,vbe-firstname,17500,cik-city,1978/05/21,ucnw-street,135,MD,MARYLAND
-21,gctjx-name,upx-firstname,11960,yqr-city,1958/03/03,rlko-street,141,TN,TENNESSEE
-22,ptzmg-name,hva-firstname,15740,gux-city,1978/05/04,pugy-street,122,VI,VIRGIN
ISLANDS
-23,eyeti-name,gnw-firstname,17420,eko-city,1962/10/26,ylph-street,61,NC,NORTH
CAROLINA
-24,wccwo-name,zpj-firstname,16600,uim-city,1962/09/29,ygih-street,26,WA,WASHINGTON
-25,bwkoe-name,ayl-firstname,18660,rtw-city,1978/07/16,mzww-street,179,CA,CALIFORNIA
-26,rezku-name,zio-firstname,19080,nvt-city,1982/07/14,wwkd-street,91,CA,CALIFORNIA
-27,mjlsk-name,ecx-firstname,10800,yxu-city,1950/12/11,vttb-street,195,MO,MISSOURI
-28,wdjsi-name,aoq-firstname,13660,smo-city,1954/02/01,kako-street,7,NV,NEVADA
-29,mwfnd-name,nyb-firstname,19760,bbu-city,1986/09/23,apdi-street,91,MS,MISSISSIPPI
-30,vtuoz-name,jhh-firstname,17620,vad-city,1982/05/05,kzup-street,79,GA,GEORGIA
-31,rhhxk-name,ndr-firstname,16760,fub-city,1978/11/12,regd-street,55,OK,OKLAHOMA
-32,lpstk-name,mqz-firstname,18940,tnr-city,1982/09/16,cdhf-street,4,SD,SOUTH
DAKOTA
-33,ldhyr-name,yts-firstname,12000,auk-city,1986/11/14,abph-street,147,IN,INDIANA
-34,cjdml-name,iti-firstname,16900,wkq-city,1970/06/05,npow-street,96,NH,NEW
HAMPSHIRE
-35,cpenz-name,sbi-firstname,16380,ssl-city,1962/08/19,kilz-street,44,MS,MISSISSIPPI
-36,rxtbg-name,anr-firstname,14720,bqc-city,1958/08/10,pudg-street,140,NV,NEVADA
-37,udblf-name,raa-firstname,11500,wli-city,1978/12/13,xomd-street,41,PW,PALAU
-38,vvyce-name,gep-firstname,13740,gtd-city,1982/05/23,kwbv-street,123,undefined,undefined
-39,kwfnz-name,ucu-firstname,10580,sns-city,1978/08/18,nnun-street,20,OK,OKLAHOMA
-40,zxydx-name,tml-firstname,14680,jda-city,1974/05/29,wfjn-street,157,DC,DISTRICT
OF COLUMBIA
-41,bfscx-name,jnl-firstname,16920,yyg-city,1970/11/30,cgfh-street,178,CO,COLORADO
-42,qitur-name,yra-firstname,15560,ijp-city,1978/01/30,fonc-street,155,AK,ALASKA
-43,msixi-name,ynb-firstname,12720,ksl-city,1958/07/17,zpjw-street,46,VI,VIRGIN
ISLANDS
-44,wzkjq-name,rgh-firstname,19000,hkm-city,1974/08/12,yixf-street,134,CA,CALIFORNIA
-45,dqfmf-name,yxr-firstname,13840,vie-city,1962/10/23,stvx-street,39,TX,TEXAS
-46,biluz-name,uqe-firstname,17760,wkq-city,1962/07/27,embn-street,183,PW,PALAU
-47,wahfx-name,zwd-firstname,13240,vic-city,1974/03/27,axpw-street,131,UT,UTAH
-48,denwt-name,bta-firstname,17300,hhj-city,1986/12/20,orwy-street,11,WV,WEST
VIRGINIA
-49,akdmy-name,ybz-firstname,14560,wtx-city,1962/11/08,nwba-street,123,MP,NORTHERN
MARIANA ISLANDS
-50,hqafg-name,nht-firstname,16080,gfu-city,1951/01/12,spsq-street,45,LA,LOUISIANA
-51,zhmbl-name,lnw-firstname,17460,hse-city,1986/12/21,scis-street,97,GA,GEORGIA
-52,snwnj-name,jyy-firstname,16400,hsz-city,1966/02/15,imhl-street,42,NC,NORTH
CAROLINA
-53,fuyla-name,mmp-firstname,11840,hgu-city,1986/08/16,ixiz-street,145,NC,NORTH
CAROLINA
-54,yvfqz-name,prz-firstname,11260,wjl-city,1982/05/06,fbzd-street,97,MO,MISSOURI
-55,usbgq-name,vhd-firstname,14080,dsb-city,1958/04/01,ggoc-street,54,KS,KANSAS
-56,yaeni-name,zpy-firstname,19100,sen-city,1954/12/10,sbsw-street,158,HI,HAWAII
-57,fgxvr-name,vzi-firstname,17520,lcf-city,1958/11/01,nbdv-street,10,GU,GUAM
-58,tqpbq-name,rwr-firstname,19140,zpd-city,1978/08/23,npvb-street,190,DC,DISTRICT
OF COLUMBIA
-59,ieigg-name,ayq-firstname,12960,ljc-city,1962/07/05,dnjz-street,163,FL,FLORIDA
-60,rfvzu-name,edm-firstname,13340,kvz-city,1954/12/08,eijd-street,4,RI,RHODE
ISLAND
-61,pduwm-name,gqb-firstname,14240,cyr-city,1954/07/03,ndux-street,13,SD,SOUTH
DAKOTA
-62,yyixf-name,yzt-firstname,18020,lwx-city,1974/01/29,iede-street,120,NV,NEVADA
-63,dkszq-name,ytd-firstname,14700,zwh-city,1979/01/11,nbjz-street,65,AS,AMERICAN
SAMOA
-64,slkzv-name,zbg-firstname,19880,oee-city,1978/11/01,sphg-street,119,OK,OKLAHOMA
-65,nvxim-name,phc-firstname,19220,vgg-city,1991/01/24,juok-street,106,FM,FEDERATED
STATES OF MICRONESIA
-66,piyfg-name,xtn-firstname,13760,nde-city,1954/07/22,vfrv-street,11,NY,NEW
YORK
-67,jnusz-name,mjw-firstname,12640,nwb-city,1986/08/23,kcsa-street,138,VA,VIRGINIA
-68,jnypj-name,ioq-firstname,17000,zqy-city,1986/01/09,croe-street,119,PW,PALAU
-69,uohts-name,btx-firstname,13480,dal-city,1990/10/22,llyw-street,150,WA,WASHINGTON
-70,aavpj-name,pvw-firstname,13780,lai-city,1954/09/23,nygu-street,171,FL,FLORIDA
-71,nbjcj-name,rsf-firstname,12000,kjl-city,1986/06/30,ijsb-street,123,ID,IDAHO
-72,syjxh-name,gkq-firstname,19960,rmd-city,1978/10/26,qmyp-street,161,MN,MINNESOTA
-73,vkojz-name,ryo-firstname,14300,bmz-city,1954/09/11,gcpj-street,71,ND,NORTH
DAKOTA
-74,pqzfw-name,kld-firstname,16400,qvq-city,1962/09/09,dhbv-street,92,ND,NORTH
DAKOTA
-75,owvjk-name,fez-firstname,19740,ldb-city,1978/06/14,kabf-street,87,VA,VIRGINIA
-76,qsfih-name,ixe-firstname,16860,qvr-city,1987/01/07,qean-street,159,CO,COLORADO
-77,slixq-name,gmb-firstname,19980,ftt-city,1982/06/22,xinx-street,111,VT,VERMONT
-78,eegsa-name,xlc-firstname,12680,byk-city,1954/04/23,beul-street,56,MD,MARYLAND
-79,phevp-name,ihs-firstname,16120,adc-city,1978/04/25,voig-street,98,NM,NEW
MEXICO
-80,njfoe-name,tag-firstname,16580,tnr-city,1966/12/04,dhky-street,108,LA,LOUISIANA
-81,bdncx-name,hcd-firstname,11260,xcl-city,1970/07/02,jvlp-street,49,GA,GEORGIA
-82,ikedo-name,tks-firstname,17460,odl-city,1958/08/25,iaaq-street,8,GU,GUAM
-83,iafxy-name,vur-firstname,11480,hgt-city,1962/08/03,hmec-street,164,TX,TEXAS
-84,lafhf-name,ssz-firstname,19560,wwp-city,1951/01/25,mxmq-street,96,IN,INDIANA
-85,okyny-name,hbu-firstname,16800,yok-city,1978/03/28,ipjz-street,135,NV,NEVADA
-86,hznby-name,fwy-firstname,13680,wbi-city,1970/07/25,mxui-street,170,CT,CONNECTICUT
-87,ztpoa-name,rzk-firstname,18500,qum-city,1970/07/26,blqr-street,152,ME,MAINE
-88,gitxz-name,axt-firstname,11800,fck-city,1974/01/12,tmjw-street,189,SD,SOUTH
DAKOTA
-89,ziomm-name,mcv-firstname,12940,iwq-city,1950/10/22,hqgj-street,140,DC,DISTRICT
OF COLUMBIA
-90,otncg-name,tuy-firstname,16540,ulk-city,1971/01/24,yuia-street,166,TX,TEXAS
-91,cnabb-name,hoq-firstname,16300,tuw-city,1962/06/17,ujvv-street,61,ME,MAINE
-92,ucogf-name,ggc-firstname,14500,fsj-city,1978/02/08,asfi-street,53,WV,WEST
VIRGINIA
-93,lbpmf-name,sdt-firstname,10780,ewj-city,1978/03/08,hxsp-street,102,NV,NEVADA
-94,tieqq-name,uyu-firstname,17740,wea-city,1966/10/31,abpl-street,187,MO,MISSOURI
-95,fsgwf-name,vjd-firstname,12460,ads-city,1970/11/29,yeou-street,10,MA,MASSACHUSETTS
-96,reeba-name,kzs-firstname,13100,zhc-city,1966/07/08,abmv-street,88,FL,FLORIDA
-97,shybc-name,gcp-firstname,10660,ahg-city,1950/12/15,hrqy-street,174,KS,KANSAS
-98,phszr-name,sst-firstname,13080,ydd-city,1954/09/23,quqn-street,2,RI,RHODE
ISLAND
-99,jteco-name,fxc-firstname,19760,agr-city,1986/05/06,dzxc-street,108,MD,MARYLAND
-100,qvaar-name,icx-firstname,16120,boc-city,1978/08/04,bfzf-street,12,NM,NEW
MEXICO
+id,name,firstname,zip,city,birthdate,street,housenr,stateCode,state,isActive,registrationTimestamp,metadataJson
+1,jwcdf-name,fsj-firstname,13520,oem-city,1954/02/07,amrb-street,145,AK,ALASKA,true,2025-12-16
09:47:47.123,"{""ip"":""192.168.1.10"",""session_id"":""a1b2c3d4"",""duration_sec"":120}"
+2,flhxu-name,tum-firstname,17520,buo-city,1966/04/24,wfyz-street,96,GA,GEORGIA,false,2024-07-02
15:06:40.456,"{""ip"":""10.0.0.5"",""session_id"":""f5g6h7i8"",""duration_sec"":300}"
+3,xthfg-name,gfe-firstname,12560,vtz-city,1990/01/11,doxx-street,46,NJ,NEW
JERSEY,true,2024-01-01
00:00:00.123,"{""ip"":""172.16.0.23"",""session_id"":""j9k0l1m2"",""duration_sec"":45}"
+4,ulzrz-name,bnl-firstname,11620,prz-city,1966/08/02,bxqn-street,104,NY,NEW
YORK,false,2023-03-31
12:00:00.789,"{""ip"":""192.168.1.45"",""session_id"":""n3o4p5q6"",""duration_sec"":420}"
+5,oxhyr-name,onx-firstname,15180,bpn-city,1970/11/14,pksn-street,133,IN,INDIANA,true,2022-09-01
05:59:59.123,"{""ip"":""10.1.2.3"",""session_id"":""r7s8t9u0"",""duration_sec"":215}"
+6,fiqjz-name,sce-firstname,16020,fnn-city,1954/09/24,wbhg-street,35,MD,MARYLAND,false,2022-01-01
00:00:00.000,"{""ip"":""172.16.5.6"",""session_id"":""v1w2x3y4"",""duration_sec"":90}"
+7,tkiat-name,xti-firstname,12720,stt-city,1966/08/11,tvnf-street,21,PA,PENNSYLVANIA,true,2021-01-01
00:00:00.123,"{""ip"":""192.168.0.12"",""session_id"":""z5a6b7c8"",""duration_sec"":600}"
+8,kljcz-name,uqd-firstname,13340,ntt-city,1987/01/15,jyje-street,10,PW,PALAU,false,2020-01-01
00:00:00.456,"{""ip"":""10.0.3.4"",""session_id"":""d9e0f1g2"",""duration_sec"":180}"
+9,pgunz-name,hcm-firstname,16680,gxh-city,1970/11/08,shbe-street,184,NC,NORTH
CAROLINA,true,2019-01-01
00:00:00.789,"{""ip"":""172.16.8.9"",""session_id"":""h3i4j5k6"",""duration_sec"":75}"
+10,oyjha-name,uhj-firstname,18880,uyg-city,1966/04/10,bjgw-street,176,AR,ARKANSAS,false,2023-03-31
12:00:00.789,"{""ip"":""192.168.2.34"",""session_id"":""l7m8n9o0"",""duration_sec"":330}"
+11,igxbd-name,uph-firstname,13480,ndh-city,1962/12/03,jdcd-street,151,NH,NEW
HAMPSHIRE,true,2022-09-01
05:59:59.123,"{""ip"":""10.0.0.5"",""session_id"":""f5g6h7i8"",""duration_sec"":300}"
+12,vnaov-name,wha-firstname,13120,egm-city,1954/03/28,hpep-street,20,CA,CALIFORNIA,false,2022-01-01
00:00:00.000,"{""ip"":""172.16.0.23"",""session_id"":""j9k0l1m2"",""duration_sec"":45}"
+13,dauuz-name,hwg-firstname,13740,khn-city,1958/05/15,etqx-street,5,OK,OKLAHOMA,true,2021-01-01
00:00:00.123,"{""ip"":""192.168.1.45"",""session_id"":""n3o4p5q6"",""duration_sec"":420}"
+14,gkuuo-name,kkb-firstname,13560,xdt-city,1962/04/07,sdoj-street,35,MT,MONTANA,false,2020-01-01
00:00:00.456,"{""ip"":""10.1.2.3"",""session_id"":""r7s8t9u0"",""duration_sec"":215}"
+15,wdhze-name,jjk-firstname,16900,due-city,1970/07/17,pmmu-street,174,AS,AMERICAN
SAMOA,true,2024-01-01
00:00:00.123,"{""ip"":""172.16.5.6"",""session_id"":""v1w2x3y4"",""duration_sec"":90}"
+16,ncayz-name,ynb-firstname,15720,lxj-city,1974/04/27,mdtb-street,109,MA,MASSACHUSETTS,false,2023-03-31
12:00:00.789,"{""ip"":""192.168.0.12"",""session_id"":""z5a6b7c8"",""duration_sec"":600}"
+17,rdjin-name,hhu-firstname,14480,lpc-city,1958/11/16,wxik-street,145,KY,KENTUCKY,true,2022-09-01
05:59:59.123,"{""ip"":""192.168.1.10"",""session_id"":""a1b2c3d4"",""duration_sec"":120}"
+18,nxzij-name,bdl-firstname,10740,avx-city,1958/02/20,nybz-street,138,WI,WISCONSIN,false,2022-01-01
00:00:00.000,"{""ip"":""10.0.0.5"",""session_id"":""f5g6h7i8"",""duration_sec"":300}"
+19,xgrzc-name,dxw-firstname,18900,vpq-city,1990/11/16,wzjh-street,58,ME,MAINE,true,2021-01-01
00:00:00.123,"{""ip"":""172.16.0.23"",""session_id"":""j9k0l1m2"",""duration_sec"":45}"
+20,ehgrn-name,vbe-firstname,17500,cik-city,1978/05/21,ucnw-street,135,MD,MARYLAND,false,2020-01-01
00:00:00.456,"{""ip"":""192.168.1.45"",""session_id"":""n3o4p5q6"",""duration_sec"":420}"
+21,gctjx-name,upx-firstname,11960,yqr-city,1958/03/03,rlko-street,141,TN,TENNESSEE,true,2019-01-01
00:00:00.789,"{""ip"":""10.1.2.3"",""session_id"":""r7s8t9u0"",""duration_sec"":215}"
+22,ptzmg-name,hva-firstname,15740,gux-city,1978/05/04,pugy-street,122,VI,VIRGIN
ISLANDS,false,2023-03-31
12:00:00.789,"{""ip"":""172.16.5.6"",""session_id"":""v1w2x3y4"",""duration_sec"":90}"
+23,eyeti-name,gnw-firstname,17420,eko-city,1962/10/26,ylph-street,61,NC,NORTH
CAROLINA,true,2022-09-01
05:59:59.123,"{""ip"":""192.168.0.12"",""session_id"":""z5a6b7c8"",""duration_sec"":600}"
+24,wccwo-name,zpj-firstname,16600,uim-city,1962/09/29,ygih-street,26,WA,WASHINGTON,false,2022-01-01
00:00:00.000,"{""ip"":""10.0.3.4"",""session_id"":""d9e0f1g2"",""duration_sec"":180}"
+25,bwkoe-name,ayl-firstname,18660,rtw-city,1978/07/16,mzww-street,179,CA,CALIFORNIA,true,2021-01-01
00:00:00.123,"{""ip"":""172.16.8.9"",""session_id"":""h3i4j5k6"",""duration_sec"":75}"
+26,rezku-name,zio-firstname,19080,nvt-city,1982/07/14,wwkd-street,91,CA,CALIFORNIA,false,2023-03-31
12:00:00.789,"{""ip"":""192.168.2.34"",""session_id"":""l7m8n9o0"",""duration_sec"":330}"
+27,mjlsk-name,ecx-firstname,10800,yxu-city,1950/12/11,vttb-street,195,MO,MISSOURI,true,2022-09-01
05:59:59.123,"{""ip"":""10.0.0.5"",""session_id"":""f5g6h7i8"",""duration_sec"":300}"
+28,wdjsi-name,aoq-firstname,13660,smo-city,1954/02/01,kako-street,7,NV,NEVADA,false,2022-01-01
00:00:00.000,"{""ip"":""192.168.1.10"",""session_id"":""a1b2c3d4"",""duration_sec"":120}"
+29,mwfnd-name,nyb-firstname,19760,bbu-city,1986/09/23,apdi-street,91,MS,MISSISSIPPI,true,2021-01-01
00:00:00.123,"{""ip"":""10.0.0.5"",""session_id"":""f5g6h7i8"",""duration_sec"":300}"
+30,vtuoz-name,jhh-firstname,17620,vad-city,1982/05/05,kzup-street,79,GA,GEORGIA,false,2020-01-01
00:00:00.456,"{""ip"":""172.16.0.23"",""session_id"":""j9k0l1m2"",""duration_sec"":45}"
+31,rhhxk-name,ndr-firstname,16760,fub-city,1978/11/12,regd-street,55,OK,OKLAHOMA,true,2019-01-01
00:00:00.789,"{""ip"":""192.168.1.45"",""session_id"":""n3o4p5q6"",""duration_sec"":420}"
+32,lpstk-name,mqz-firstname,18940,tnr-city,1982/09/16,cdhf-street,4,SD,SOUTH
DAKOTA,false,2023-03-31
12:00:00.789,"{""ip"":""10.1.2.3"",""session_id"":""r7s8t9u0"",""duration_sec"":215}"
+33,ldhyr-name,yts-firstname,12000,auk-city,1986/11/14,abph-street,147,IN,INDIANA,true,2022-09-01
05:59:59.123,"{""ip"":""172.16.5.6"",""session_id"":""v1w2x3y4"",""duration_sec"":90}"
+34,cjdml-name,iti-firstname,16900,wkq-city,1970/06/05,npow-street,96,NH,NEW
HAMPSHIRE,false,2022-01-01
00:00:00.000,"{""ip"":""192.168.0.12"",""session_id"":""z5a6b7c8"",""duration_sec"":600}"
+35,cpenz-name,sbi-firstname,16380,ssl-city,1962/08/19,kilz-street,44,MS,MISSISSIPPI,true,2021-01-01
00:00:00.123,"{""ip"":""10.0.3.4"",""session_id"":""d9e0f1g2"",""duration_sec"":180}"
+36,rxtbg-name,anr-firstname,14720,bqc-city,1958/08/10,pudg-street,140,NV,NEVADA,false,2020-01-01
00:00:00.456,"{""ip"":""172.16.8.9"",""session_id"":""h3i4j5k6"",""duration_sec"":75}"
+37,udblf-name,raa-firstname,11500,wli-city,1978/12/13,xomd-street,41,PW,PALAU,true,2019-01-01
00:00:00.789,"{""ip"":""192.168.2.34"",""session_id"":""l7m8n9o0"",""duration_sec"":330}"
+38,vvyce-name,gep-firstname,13740,gtd-city,1982/05/23,kwbv-street,123,undefined,undefined,false,2023-03-31
12:00:00.789,"{""ip"":""10.0.0.5"",""session_id"":""f5g6h7i8"",""duration_sec"":300}"
+39,kwfnz-name,ucu-firstname,10580,sns-city,1978/08/18,nnun-street,20,OK,OKLAHOMA,true,2022-09-01
05:59:59.123,"{""ip"":""192.168.0.12"",""session_id"":""z5a6b7c8"",""duration_sec"":600}"
+40,zxydx-name,tml-firstname,14680,jda-city,1974/05/29,wfjn-street,157,DC,DISTRICT
OF COLUMBIA,false,2022-01-01
00:00:00.000,"{""ip"":""192.168.1.10"",""session_id"":""a1b2c3d4"",""duration_sec"":120}"
+41,bfscx-name,jnl-firstname,16920,yyg-city,1970/11/30,cgfh-street,178,CO,COLORADO,true,2021-01-01
00:00:00.123,"{""ip"":""10.0.0.5"",""session_id"":""f5g6h7i8"",""duration_sec"":300}"
+42,qitur-name,yra-firstname,15560,ijp-city,1978/01/30,fonc-street,155,AK,ALASKA,false,2020-01-01
00:00:00.456,"{""ip"":""172.16.0.23"",""session_id"":""j9k0l1m2"",""duration_sec"":45}"
+43,msixi-name,ynb-firstname,12720,ksl-city,1958/07/17,zpjw-street,46,VI,VIRGIN
ISLANDS,true,2024-01-01
00:00:00.123,"{""ip"":""192.168.1.45"",""session_id"":""n3o4p5q6"",""duration_sec"":420}"
+44,wzkjq-name,rgh-firstname,19000,hkm-city,1974/08/12,yixf-street,134,CA,CALIFORNIA,false,2023-03-31
12:00:00.789,"{""ip"":""10.1.2.3"",""session_id"":""r7s8t9u0"",""duration_sec"":215}"
+45,dqfmf-name,yxr-firstname,13840,vie-city,1962/10/23,stvx-street,39,TX,TEXAS,true,2022-09-01
05:59:59.123,"{""ip"":""172.16.5.6"",""session_id"":""v1w2x3y4"",""duration_sec"":90}"
+46,biluz-name,uqe-firstname,17760,wkq-city,1962/07/27,embn-street,183,PW,PALAU,false,2022-01-01
00:00:00.000,"{""ip"":""192.168.0.12"",""session_id"":""z5a6b7c8"",""duration_sec"":600}"
+47,wahfx-name,zwd-firstname,13240,vic-city,1974/03/27,axpw-street,131,UT,UTAH,true,2021-01-01
00:00:00.123,"{""ip"":""10.0.3.4"",""session_id"":""d9e0f1g2"",""duration_sec"":180}"
+48,denwt-name,bta-firstname,17300,hhj-city,1986/12/20,orwy-street,11,WV,WEST
VIRGINIA,false,2020-01-01
00:00:00.456,"{""ip"":""172.16.8.9"",""session_id"":""h3i4j5k6"",""duration_sec"":75}"
+49,akdmy-name,ybz-firstname,14560,wtx-city,1962/11/08,nwba-street,123,MP,NORTHERN
MARIANA ISLANDS,true,2019-01-01
00:00:00.789,"{""ip"":""192.168.2.34"",""session_id"":""l7m8n9o0"",""duration_sec"":330}"
+50,hqafg-name,nht-firstname,16080,gfu-city,1951/01/12,spsq-street,45,LA,LOUISIANA,false,2023-03-31
12:00:00.789,"{""ip"":""10.0.0.5"",""session_id"":""f5g6h7i8"",""duration_sec"":300}"
+51,zhmbl-name,lnw-firstname,17460,hse-city,1986/12/21,scis-street,97,GA,GEORGIA,true,2022-09-01
05:59:59.123,"{""ip"":""192.168.1.10"",""session_id"":""a1b2c3d4"",""duration_sec"":120}"
+52,snwnj-name,jyy-firstname,16400,hsz-city,1966/02/15,imhl-street,42,NC,NORTH
CAROLINA,false,2022-01-01
00:00:00.000,"{""ip"":""10.0.0.5"",""session_id"":""f5g6h7i8"",""duration_sec"":300}"
+53,fuyla-name,mmp-firstname,11840,hgu-city,1986/08/16,ixiz-street,145,NC,NORTH
CAROLINA,true,2021-01-01
00:00:00.123,"{""ip"":""172.16.0.23"",""session_id"":""j9k0l1m2"",""duration_sec"":45}"
+54,yvfqz-name,prz-firstname,11260,wjl-city,1982/05/06,fbzd-street,97,MO,MISSOURI,false,2023-03-31
12:00:00.789,"{""ip"":""192.168.1.45"",""session_id"":""n3o4p5q6"",""duration_sec"":420}"
+55,usbgq-name,vhd-firstname,14080,dsb-city,1958/04/01,ggoc-street,54,KS,KANSAS,true,2022-09-01
05:59:59.123,"{""ip"":""10.1.2.3"",""session_id"":""r7s8t9u0"",""duration_sec"":215}"
+56,yaeni-name,zpy-firstname,19100,sen-city,1954/12/10,sbsw-street,158,HI,HAWAII,false,2023-03-31
12:00:00.789,"{""ip"":""172.16.5.6"",""session_id"":""v1w2x3y4"",""duration_sec"":90}"
+57,fgxvr-name,vzi-firstname,17520,lcf-city,1958/11/01,nbdv-street,10,GU,GUAM,true,2022-09-01
05:59:59.123,"{""ip"":""192.168.0.12"",""session_id"":""z5a6b7c8"",""duration_sec"":600}"
+58,tqpbq-name,rwr-firstname,19140,zpd-city,1978/08/23,npvb-street,190,DC,DISTRICT
OF COLUMBIA,false,2022-01-01
00:00:00.000,"{""ip"":""10.0.3.4"",""session_id"":""d9e0f1g2"",""duration_sec"":180}"
+59,ieigg-name,ayq-firstname,12960,ljc-city,1962/07/05,dnjz-street,163,FL,FLORIDA,true,2021-01-01
00:00:00.123,"{""ip"":""172.16.8.9"",""session_id"":""h3i4j5k6"",""duration_sec"":75}"
+60,rfvzu-name,edm-firstname,13340,kvz-city,1954/12/08,eijd-street,4,RI,RHODE
ISLAND,false,2020-01-01
00:00:00.456,"{""ip"":""192.168.2.34"",""session_id"":""l7m8n9o0"",""duration_sec"":330}"
+61,pduwm-name,gqb-firstname,14240,cyr-city,1954/07/03,ndux-street,13,SD,SOUTH
DAKOTA,true,2019-01-01
00:00:00.789,"{""ip"":""192.168.0.12"",""session_id"":""z5a6b7c8"",""duration_sec"":600}"
+62,yyixf-name,yzt-firstname,18020,lwx-city,1974/01/29,iede-street,120,NV,NEVADA,false,2023-03-31
12:00:00.789,"{""ip"":""192.168.1.10"",""session_id"":""a1b2c3d4"",""duration_sec"":120}"
+63,dkszq-name,ytd-firstname,14700,zwh-city,1979/01/11,nbjz-street,65,AS,AMERICAN
SAMOA,true,2022-09-01
05:59:59.123,"{""ip"":""10.0.0.5"",""session_id"":""f5g6h7i8"",""duration_sec"":300}"
+64,slkzv-name,zbg-firstname,19880,oee-city,1978/11/01,sphg-street,119,OK,OKLAHOMA,false,2022-01-01
00:00:00.000,"{""ip"":""172.16.0.23"",""session_id"":""j9k0l1m2"",""duration_sec"":45}"
+65,nvxim-name,phc-firstname,19220,vgg-city,1991/01/24,juok-street,106,FM,FEDERATED
STATES OF MICRONESIA,true,2021-01-01
00:00:00.123,"{""ip"":""192.168.1.45"",""session_id"":""n3o4p5q6"",""duration_sec"":420}"
+66,piyfg-name,xtn-firstname,13760,nde-city,1954/07/22,vfrv-street,11,NY,NEW
YORK,false,2020-01-01
00:00:00.456,"{""ip"":""10.1.2.3"",""session_id"":""r7s8t9u0"",""duration_sec"":215}"
+67,jnusz-name,mjw-firstname,12640,nwb-city,1986/08/23,kcsa-street,138,VA,VIRGINIA,true,2024-01-01
00:00:00.123,"{""ip"":""172.16.5.6"",""session_id"":""v1w2x3y4"",""duration_sec"":90}"
+68,jnypj-name,ioq-firstname,17000,zqy-city,1986/01/09,croe-street,119,PW,PALAU,false,2023-03-31
12:00:00.789,"{""ip"":""192.168.0.12"",""session_id"":""z5a6b7c8"",""duration_sec"":600}"
+69,uohts-name,btx-firstname,13480,dal-city,1990/10/22,llyw-street,150,WA,WASHINGTON,true,2022-09-01
05:59:59.123,"{""ip"":""10.0.3.4"",""session_id"":""d9e0f1g2"",""duration_sec"":180}"
+70,aavpj-name,pvw-firstname,13780,lai-city,1954/09/23,nygu-street,171,FL,FLORIDA,false,2022-01-01
00:00:00.000,"{""ip"":""172.16.8.9"",""session_id"":""h3i4j5k6"",""duration_sec"":75}"
+71,nbjcj-name,rsf-firstname,12000,kjl-city,1986/06/30,ijsb-street,123,ID,IDAHO,true,2021-01-01
00:00:00.123,"{""ip"":""192.168.2.34"",""session_id"":""l7m8n9o0"",""duration_sec"":330}"
+72,syjxh-name,gkq-firstname,19960,rmd-city,1978/10/26,qmyp-street,161,MN,MINNESOTA,false,2020-01-01
00:00:00.456,"{""ip"":""10.0.0.5"",""session_id"":""f5g6h7i8"",""duration_sec"":300}"
+73,vkojz-name,ryo-firstname,14300,bmz-city,1954/09/11,gcpj-street,71,ND,NORTH
DAKOTA,true,2019-01-01
00:00:00.789,"{""ip"":""192.168.1.10"",""session_id"":""a1b2c3d4"",""duration_sec"":120}"
+74,pqzfw-name,kld-firstname,16400,qvq-city,1962/09/09,dhbv-street,92,ND,NORTH
DAKOTA,false,2023-03-31
12:00:00.789,"{""ip"":""10.0.0.5"",""session_id"":""f5g6h7i8"",""duration_sec"":300}"
+75,owvjk-name,fez-firstname,19740,ldb-city,1978/06/14,kabf-street,87,VA,VIRGINIA,true,2022-09-01
05:59:59.123,"{""ip"":""172.16.0.23"",""session_id"":""j9k0l1m2"",""duration_sec"":45}"
+76,qsfih-name,ixe-firstname,16860,qvr-city,1987/01/07,qean-street,159,CO,COLORADO,false,2022-01-01
00:00:00.000,"{""ip"":""192.168.1.45"",""session_id"":""n3o4p5q6"",""duration_sec"":420}"
+77,slixq-name,gmb-firstname,19980,ftt-city,1982/06/22,xinx-street,111,VT,VERMONT,true,2021-01-01
00:00:00.123,"{""ip"":""10.1.2.3"",""session_id"":""r7s8t9u0"",""duration_sec"":215}"
+78,eegsa-name,xlc-firstname,12680,byk-city,1954/04/23,beul-street,56,MD,MARYLAND,false,2023-03-31
12:00:00.789,"{""ip"":""172.16.5.6"",""session_id"":""v1w2x3y4"",""duration_sec"":90}"
+79,phevp-name,ihs-firstname,16120,adc-city,1978/04/25,voig-street,98,NM,NEW
MEXICO,true,2022-09-01
05:59:59.123,"{""ip"":""192.168.0.12"",""session_id"":""z5a6b7c8"",""duration_sec"":600}"
+80,njfoe-name,tag-firstname,16580,tnr-city,1966/12/04,dhky-street,108,LA,LOUISIANA,false,2023-03-31
12:00:00.789,"{""ip"":""10.0.3.4"",""session_id"":""d9e0f1g2"",""duration_sec"":180}"
+81,bdncx-name,hcd-firstname,11260,xcl-city,1970/07/02,jvlp-street,49,GA,GEORGIA,true,2022-09-01
05:59:59.123,"{""ip"":""172.16.8.9"",""session_id"":""h3i4j5k6"",""duration_sec"":75}"
+82,ikedo-name,tks-firstname,17460,odl-city,1958/08/25,iaaq-street,8,GU,GUAM,false,2022-01-01
00:00:00.000,"{""ip"":""192.168.2.34"",""session_id"":""l7m8n9o0"",""duration_sec"":330}"
+83,iafxy-name,vur-firstname,11480,hgt-city,1962/08/03,hmec-street,164,TX,TEXAS,true,2021-01-01
00:00:00.123,"{""ip"":""192.168.0.12"",""session_id"":""z5a6b7c8"",""duration_sec"":600}"
+84,lafhf-name,ssz-firstname,19560,wwp-city,1951/01/25,mxmq-street,96,IN,INDIANA,false,2020-01-01
00:00:00.456,"{""ip"":""192.168.1.10"",""session_id"":""a1b2c3d4"",""duration_sec"":120}"
+85,okyny-name,hbu-firstname,16800,yok-city,1978/03/28,ipjz-street,135,NV,NEVADA,true,2019-01-01
00:00:00.789,"{""ip"":""10.0.0.5"",""session_id"":""f5g6h7i8"",""duration_sec"":300}"
+86,hznby-name,fwy-firstname,13680,wbi-city,1970/07/25,mxui-street,170,CT,CONNECTICUT,false,2023-03-31
12:00:00.789,"{""ip"":""172.16.0.23"",""session_id"":""j9k0l1m2"",""duration_sec"":45}"
+87,ztpoa-name,rzk-firstname,18500,qum-city,1970/07/26,blqr-street,152,ME,MAINE,true,2022-09-01
05:59:59.123,"{""ip"":""192.168.1.45"",""session_id"":""n3o4p5q6"",""duration_sec"":420}"
+88,gitxz-name,axt-firstname,11800,fck-city,1974/01/12,tmjw-street,189,SD,SOUTH
DAKOTA,false,2022-01-01
00:00:00.000,"{""ip"":""10.1.2.3"",""session_id"":""r7s8t9u0"",""duration_sec"":215}"
+89,ziomm-name,mcv-firstname,12940,iwq-city,1950/10/22,hqgj-street,140,DC,DISTRICT
OF COLUMBIA,true,2021-01-01
00:00:00.123,"{""ip"":""172.16.5.6"",""session_id"":""v1w2x3y4"",""duration_sec"":90}"
+90,otncg-name,tuy-firstname,16540,ulk-city,1971/01/24,yuia-street,166,TX,TEXAS,false,2020-01-01
00:00:00.456,"{""ip"":""192.168.0.12"",""session_id"":""z5a6b7c8"",""duration_sec"":600}"
+91,cnabb-name,hoq-firstname,16300,tuw-city,1962/06/17,ujvv-street,61,ME,MAINE,true,2024-01-01
00:00:00.123,"{""ip"":""10.0.3.4"",""session_id"":""d9e0f1g2"",""duration_sec"":180}"
+92,ucogf-name,ggc-firstname,14500,fsj-city,1978/02/08,asfi-street,53,WV,WEST
VIRGINIA,false,2023-03-31
12:00:00.789,"{""ip"":""172.16.8.9"",""session_id"":""h3i4j5k6"",""duration_sec"":75}"
+93,lbpmf-name,sdt-firstname,10780,ewj-city,1978/03/08,hxsp-street,102,NV,NEVADA,true,2022-09-01
05:59:59.123,"{""ip"":""192.168.2.34"",""session_id"":""l7m8n9o0"",""duration_sec"":330}"
+94,tieqq-name,uyu-firstname,17740,wea-city,1966/10/31,abpl-street,187,MO,MISSOURI,false,2022-01-01
00:00:00.000,"{""ip"":""10.0.0.5"",""session_id"":""f5g6h7i8"",""duration_sec"":300}"
+95,fsgwf-name,vjd-firstname,12460,ads-city,1970/11/29,yeou-street,10,MA,MASSACHUSETTS,true,2021-01-01
00:00:00.123,"{""ip"":""192.168.1.10"",""session_id"":""a1b2c3d4"",""duration_sec"":120}"
+96,reeba-name,kzs-firstname,13100,zhc-city,1966/07/08,abmv-street,88,FL,FLORIDA,false,2020-01-01
00:00:00.456,"{""ip"":""10.0.0.5"",""session_id"":""f5g6h7i8"",""duration_sec"":300}"
+97,shybc-name,gcp-firstname,10660,ahg-city,1950/12/15,hrqy-street,174,KS,KANSAS,true,2019-01-01
00:00:00.789,"{""ip"":""172.16.0.23"",""session_id"":""j9k0l1m2"",""duration_sec"":45}"
+98,phszr-name,sst-firstname,13080,ydd-city,1954/09/23,quqn-street,2,RI,RHODE
ISLAND,false,2023-03-31
12:00:00.789,"{""ip"":""192.168.1.45"",""session_id"":""n3o4p5q6"",""duration_sec"":420}"
+99,jteco-name,fxc-firstname,19760,agr-city,1986/05/06,dzxc-street,108,MD,MARYLAND,true,2022-09-01
05:59:59.123,"{""ip"":""10.1.2.3"",""session_id"":""r7s8t9u0"",""duration_sec"":215}"
+100,qvaar-name,icx-firstname,16120,boc-city,1978/08/04,bfzf-street,12,NM,NEW
MEXICO,false,2022-01-01
00:00:00.000,"{""ip"":""172.16.5.6"",""session_id"":""v1w2x3y4"",""duration_sec"":90}"
diff --git a/integration-tests/transforms/files/customers-100.txt
b/integration-tests/transforms/files/customers-100.txt
index 8b8bd04955..fca1fbb8d6 100644
--- a/integration-tests/transforms/files/customers-100.txt
+++ b/integration-tests/transforms/files/customers-100.txt
@@ -1,101 +1,101 @@
-id;name;firstname;zip;city;birthdate;street;housenr;stateCode;state
- 1;jwcdf-name;fsj-firstname; 13520;oem-city;1954/02/07;amrb-street;
145;AK;ALASKA
- 2;flhxu-name;tum-firstname; 17520;buo-city;1966/04/24;wfyz-street;
96;GA;GEORGIA
- 3;xthfg-name;gfe-firstname; 12560;vtz-city;1990/01/11;doxx-street; 46;NJ;NEW
JERSEY
- 4;ulzrz-name;bnl-firstname; 11620;prz-city;1966/08/02;bxqn-street; 104;NY;NEW
YORK
- 5;oxhyr-name;onx-firstname; 15180;bpn-city;1970/11/14;pksn-street;
133;IN;INDIANA
- 6;fiqjz-name;sce-firstname; 16020;fnn-city;1954/09/24;wbhg-street;
35;MD;MARYLAND
- 7;tkiat-name;xti-firstname; 12720;stt-city;1966/08/11;tvnf-street;
21;PA;PENNSYLVANIA
- 8;kljcz-name;uqd-firstname; 13340;ntt-city;1987/01/15;jyje-street; 10;PW;PALAU
- 9;pgunz-name;hcm-firstname; 16680;gxh-city;1970/11/08;shbe-street;
184;NC;NORTH CAROLINA
- 10;oyjha-name;uhj-firstname; 18880;uyg-city;1966/04/10;bjgw-street;
176;AR;ARKANSAS
- 11;igxbd-name;uph-firstname; 13480;ndh-city;1962/12/03;jdcd-street;
151;NH;NEW HAMPSHIRE
- 12;vnaov-name;wha-firstname; 13120;egm-city;1954/03/28;hpep-street;
20;CA;CALIFORNIA
- 13;dauuz-name;hwg-firstname; 13740;khn-city;1958/05/15;etqx-street;
5;OK;OKLAHOMA
- 14;gkuuo-name;kkb-firstname; 13560;xdt-city;1962/04/07;sdoj-street;
35;MT;MONTANA
- 15;wdhze-name;jjk-firstname; 16900;due-city;1970/07/17;pmmu-street;
174;AS;AMERICAN SAMOA
- 16;ncayz-name;ynb-firstname; 15720;lxj-city;1974/04/27;mdtb-street;
109;MA;MASSACHUSETTS
- 17;rdjin-name;hhu-firstname; 14480;lpc-city;1958/11/16;wxik-street;
145;KY;KENTUCKY
- 18;nxzij-name;bdl-firstname; 10740;avx-city;1958/02/20;nybz-street;
138;WI;WISCONSIN
- 19;xgrzc-name;dxw-firstname; 18900;vpq-city;1990/11/16;wzjh-street;
58;ME;MAINE
- 20;ehgrn-name;vbe-firstname; 17500;cik-city;1978/05/21;ucnw-street;
135;MD;MARYLAND
- 21;gctjx-name;upx-firstname; 11960;yqr-city;1958/03/03;rlko-street;
141;TN;TENNESSEE
- 22;ptzmg-name;hva-firstname; 15740;gux-city;1978/05/04;pugy-street;
122;VI;VIRGIN ISLANDS
- 23;eyeti-name;gnw-firstname; 17420;eko-city;1962/10/26;ylph-street;
61;NC;NORTH CAROLINA
- 24;wccwo-name;zpj-firstname; 16600;uim-city;1962/09/29;ygih-street;
26;WA;WASHINGTON
- 25;bwkoe-name;ayl-firstname; 18660;rtw-city;1978/07/16;mzww-street;
179;CA;CALIFORNIA
- 26;rezku-name;zio-firstname; 19080;nvt-city;1982/07/14;wwkd-street;
91;CA;CALIFORNIA
- 27;mjlsk-name;ecx-firstname; 10800;yxu-city;1950/12/11;vttb-street;
195;MO;MISSOURI
- 28;wdjsi-name;aoq-firstname; 13660;smo-city;1954/02/01;kako-street;
7;NV;NEVADA
- 29;mwfnd-name;nyb-firstname; 19760;bbu-city;1986/09/23;apdi-street;
91;MS;MISSISSIPPI
- 30;vtuoz-name;jhh-firstname; 17620;vad-city;1982/05/05;kzup-street;
79;GA;GEORGIA
- 31;rhhxk-name;ndr-firstname; 16760;fub-city;1978/11/12;regd-street;
55;OK;OKLAHOMA
- 32;lpstk-name;mqz-firstname; 18940;tnr-city;1982/09/16;cdhf-street;
4;SD;SOUTH DAKOTA
- 33;ldhyr-name;yts-firstname; 12000;auk-city;1986/11/14;abph-street;
147;IN;INDIANA
- 34;cjdml-name;iti-firstname; 16900;wkq-city;1970/06/05;npow-street; 96;NH;NEW
HAMPSHIRE
- 35;cpenz-name;sbi-firstname; 16380;ssl-city;1962/08/19;kilz-street;
44;MS;MISSISSIPPI
- 36;rxtbg-name;anr-firstname; 14720;bqc-city;1958/08/10;pudg-street;
140;NV;NEVADA
- 37;udblf-name;raa-firstname; 11500;wli-city;1978/12/13;xomd-street;
41;PW;PALAU
- 38;vvyce-name;gep-firstname; 13740;gtd-city;1982/05/23;kwbv-street;
123;undefined;undefined
- 39;kwfnz-name;ucu-firstname; 10580;sns-city;1978/08/18;nnun-street;
20;OK;OKLAHOMA
- 40;zxydx-name;tml-firstname; 14680;jda-city;1974/05/29;wfjn-street;
157;DC;DISTRICT OF COLUMBIA
- 41;bfscx-name;jnl-firstname; 16920;yyg-city;1970/11/30;cgfh-street;
178;CO;COLORADO
- 42;qitur-name;yra-firstname; 15560;ijp-city;1978/01/30;fonc-street;
155;AK;ALASKA
- 43;msixi-name;ynb-firstname; 12720;ksl-city;1958/07/17;zpjw-street;
46;VI;VIRGIN ISLANDS
- 44;wzkjq-name;rgh-firstname; 19000;hkm-city;1974/08/12;yixf-street;
134;CA;CALIFORNIA
- 45;dqfmf-name;yxr-firstname; 13840;vie-city;1962/10/23;stvx-street;
39;TX;TEXAS
- 46;biluz-name;uqe-firstname; 17760;wkq-city;1962/07/27;embn-street;
183;PW;PALAU
- 47;wahfx-name;zwd-firstname; 13240;vic-city;1974/03/27;axpw-street;
131;UT;UTAH
- 48;denwt-name;bta-firstname; 17300;hhj-city;1986/12/20;orwy-street;
11;WV;WEST VIRGINIA
- 49;akdmy-name;ybz-firstname; 14560;wtx-city;1962/11/08;nwba-street;
123;MP;NORTHERN MARIANA ISLANDS
- 50;hqafg-name;nht-firstname; 16080;gfu-city;1951/01/12;spsq-street;
45;LA;LOUISIANA
- 51;zhmbl-name;lnw-firstname; 17460;hse-city;1986/12/21;scis-street;
97;GA;GEORGIA
- 52;snwnj-name;jyy-firstname; 16400;hsz-city;1966/02/15;imhl-street;
42;NC;NORTH CAROLINA
- 53;fuyla-name;mmp-firstname; 11840;hgu-city;1986/08/16;ixiz-street;
145;NC;NORTH CAROLINA
- 54;yvfqz-name;prz-firstname; 11260;wjl-city;1982/05/06;fbzd-street;
97;MO;MISSOURI
- 55;usbgq-name;vhd-firstname; 14080;dsb-city;1958/04/01;ggoc-street;
54;KS;KANSAS
- 56;yaeni-name;zpy-firstname; 19100;sen-city;1954/12/10;sbsw-street;
158;HI;HAWAII
- 57;fgxvr-name;vzi-firstname; 17520;lcf-city;1958/11/01;nbdv-street; 10;GU;GUAM
- 58;tqpbq-name;rwr-firstname; 19140;zpd-city;1978/08/23;npvb-street;
190;DC;DISTRICT OF COLUMBIA
- 59;ieigg-name;ayq-firstname; 12960;ljc-city;1962/07/05;dnjz-street;
163;FL;FLORIDA
- 60;rfvzu-name;edm-firstname; 13340;kvz-city;1954/12/08;eijd-street;
4;RI;RHODE ISLAND
- 61;pduwm-name;gqb-firstname; 14240;cyr-city;1954/07/03;ndux-street;
13;SD;SOUTH DAKOTA
- 62;yyixf-name;yzt-firstname; 18020;lwx-city;1974/01/29;iede-street;
120;NV;NEVADA
- 63;dkszq-name;ytd-firstname; 14700;zwh-city;1979/01/11;nbjz-street;
65;AS;AMERICAN SAMOA
- 64;slkzv-name;zbg-firstname; 19880;oee-city;1978/11/01;sphg-street;
119;OK;OKLAHOMA
- 65;nvxim-name;phc-firstname; 19220;vgg-city;1991/01/24;juok-street;
106;FM;FEDERATED STATES OF MICRONESIA
- 66;piyfg-name;xtn-firstname; 13760;nde-city;1954/07/22;vfrv-street; 11;NY;NEW
YORK
- 67;jnusz-name;mjw-firstname; 12640;nwb-city;1986/08/23;kcsa-street;
138;VA;VIRGINIA
- 68;jnypj-name;ioq-firstname; 17000;zqy-city;1986/01/09;croe-street;
119;PW;PALAU
- 69;uohts-name;btx-firstname; 13480;dal-city;1990/10/22;llyw-street;
150;WA;WASHINGTON
- 70;aavpj-name;pvw-firstname; 13780;lai-city;1954/09/23;nygu-street;
171;FL;FLORIDA
- 71;nbjcj-name;rsf-firstname; 12000;kjl-city;1986/06/30;ijsb-street;
123;ID;IDAHO
- 72;syjxh-name;gkq-firstname; 19960;rmd-city;1978/10/26;qmyp-street;
161;MN;MINNESOTA
- 73;vkojz-name;ryo-firstname; 14300;bmz-city;1954/09/11;gcpj-street;
71;ND;NORTH DAKOTA
- 74;pqzfw-name;kld-firstname; 16400;qvq-city;1962/09/09;dhbv-street;
92;ND;NORTH DAKOTA
- 75;owvjk-name;fez-firstname; 19740;ldb-city;1978/06/14;kabf-street;
87;VA;VIRGINIA
- 76;qsfih-name;ixe-firstname; 16860;qvr-city;1987/01/07;qean-street;
159;CO;COLORADO
- 77;slixq-name;gmb-firstname; 19980;ftt-city;1982/06/22;xinx-street;
111;VT;VERMONT
- 78;eegsa-name;xlc-firstname; 12680;byk-city;1954/04/23;beul-street;
56;MD;MARYLAND
- 79;phevp-name;ihs-firstname; 16120;adc-city;1978/04/25;voig-street; 98;NM;NEW
MEXICO
- 80;njfoe-name;tag-firstname; 16580;tnr-city;1966/12/04;dhky-street;
108;LA;LOUISIANA
- 81;bdncx-name;hcd-firstname; 11260;xcl-city;1970/07/02;jvlp-street;
49;GA;GEORGIA
- 82;ikedo-name;tks-firstname; 17460;odl-city;1958/08/25;iaaq-street; 8;GU;GUAM
- 83;iafxy-name;vur-firstname; 11480;hgt-city;1962/08/03;hmec-street;
164;TX;TEXAS
- 84;lafhf-name;ssz-firstname; 19560;wwp-city;1951/01/25;mxmq-street;
96;IN;INDIANA
- 85;okyny-name;hbu-firstname; 16800;yok-city;1978/03/28;ipjz-street;
135;NV;NEVADA
- 86;hznby-name;fwy-firstname; 13680;wbi-city;1970/07/25;mxui-street;
170;CT;CONNECTICUT
- 87;ztpoa-name;rzk-firstname; 18500;qum-city;1970/07/26;blqr-street;
152;ME;MAINE
- 88;gitxz-name;axt-firstname; 11800;fck-city;1974/01/12;tmjw-street;
189;SD;SOUTH DAKOTA
- 89;ziomm-name;mcv-firstname; 12940;iwq-city;1950/10/22;hqgj-street;
140;DC;DISTRICT OF COLUMBIA
- 90;otncg-name;tuy-firstname; 16540;ulk-city;1971/01/24;yuia-street;
166;TX;TEXAS
- 91;cnabb-name;hoq-firstname; 16300;tuw-city;1962/06/17;ujvv-street;
61;ME;MAINE
- 92;ucogf-name;ggc-firstname; 14500;fsj-city;1978/02/08;asfi-street;
53;WV;WEST VIRGINIA
- 93;lbpmf-name;sdt-firstname; 10780;ewj-city;1978/03/08;hxsp-street;
102;NV;NEVADA
- 94;tieqq-name;uyu-firstname; 17740;wea-city;1966/10/31;abpl-street;
187;MO;MISSOURI
- 95;fsgwf-name;vjd-firstname; 12460;ads-city;1970/11/29;yeou-street;
10;MA;MASSACHUSETTS
- 96;reeba-name;kzs-firstname; 13100;zhc-city;1966/07/08;abmv-street;
88;FL;FLORIDA
- 97;shybc-name;gcp-firstname; 10660;ahg-city;1950/12/15;hrqy-street;
174;KS;KANSAS
- 98;phszr-name;sst-firstname; 13080;ydd-city;1954/09/23;quqn-street;
2;RI;RHODE ISLAND
- 99;jteco-name;fxc-firstname; 19760;agr-city;1986/05/06;dzxc-street;
108;MD;MARYLAND
- 100;qvaar-name;icx-firstname; 16120;boc-city;1978/08/04;bfzf-street;
12;NM;NEW MEXICO
+id;name;firstname;zip;city;birthdate;street;housenr;stateCode;state;isActive;registrationTimestamp;metadataJson
+ 1;jwcdf-name;fsj-firstname; 13520;oem-city;1954/02/07;amrb-street;
145;AK;ALASKA;true;2025-12-16
09:47:47.123;"{""ip"":""192.168.1.10"",""session_id"":""a1b2c3d4"",""duration_sec"":120}"
+ 2;flhxu-name;tum-firstname; 17520;buo-city;1966/04/24;wfyz-street;
96;GA;GEORGIA;false;2024-07-02
15:06:40.456;"{""ip"":""10.0.0.5"",""session_id"":""f5g6h7i8"",""duration_sec"":300}"
+ 3;xthfg-name;gfe-firstname; 12560;vtz-city;1990/01/11;doxx-street; 46;NJ;NEW
JERSEY;true;2024-01-01
00:00:00.123;"{""ip"":""172.16.0.23"",""session_id"":""j9k0l1m2"",""duration_sec"":45}"
+ 4;ulzrz-name;bnl-firstname; 11620;prz-city;1966/08/02;bxqn-street; 104;NY;NEW
YORK;false;2023-03-31
12:00:00.789;"{""ip"":""192.168.1.45"",""session_id"":""n3o4p5q6"",""duration_sec"":420}"
+ 5;oxhyr-name;onx-firstname; 15180;bpn-city;1970/11/14;pksn-street;
133;IN;INDIANA;true;2022-09-01
05:59:59.123;"{""ip"":""10.1.2.3"",""session_id"":""r7s8t9u0"",""duration_sec"":215}"
+ 6;fiqjz-name;sce-firstname; 16020;fnn-city;1954/09/24;wbhg-street;
35;MD;MARYLAND;false;2022-01-01
00:00:00.000;"{""ip"":""172.16.5.6"",""session_id"":""v1w2x3y4"",""duration_sec"":90}"
+ 7;tkiat-name;xti-firstname; 12720;stt-city;1966/08/11;tvnf-street;
21;PA;PENNSYLVANIA;true;2021-01-01
00:00:00.123;"{""ip"":""192.168.0.12"",""session_id"":""z5a6b7c8"",""duration_sec"":600}"
+ 8;kljcz-name;uqd-firstname; 13340;ntt-city;1987/01/15;jyje-street;
10;PW;PALAU;false;2020-01-01
00:00:00.456;"{""ip"":""10.0.3.4"",""session_id"":""d9e0f1g2"",""duration_sec"":180}"
+ 9;pgunz-name;hcm-firstname; 16680;gxh-city;1970/11/08;shbe-street;
184;NC;NORTH CAROLINA;true;2019-01-01
00:00:00.789;"{""ip"":""172.16.8.9"",""session_id"":""h3i4j5k6"",""duration_sec"":75}"
+ 10;oyjha-name;uhj-firstname; 18880;uyg-city;1966/04/10;bjgw-street;
176;AR;ARKANSAS;false;2023-03-31
12:00:00.789;"{""ip"":""192.168.2.34"",""session_id"":""l7m8n9o0"",""duration_sec"":330}"
+ 11;igxbd-name;uph-firstname; 13480;ndh-city;1962/12/03;jdcd-street;
151;NH;NEW HAMPSHIRE;true;2022-09-01
05:59:59.123;"{""ip"":""10.0.0.5"",""session_id"":""f5g6h7i8"",""duration_sec"":300}"
+ 12;vnaov-name;wha-firstname; 13120;egm-city;1954/03/28;hpep-street;
20;CA;CALIFORNIA;false;2022-01-01
00:00:00.000;"{""ip"":""172.16.0.23"",""session_id"":""j9k0l1m2"",""duration_sec"":45}"
+ 13;dauuz-name;hwg-firstname; 13740;khn-city;1958/05/15;etqx-street;
5;OK;OKLAHOMA;true;2021-01-01
00:00:00.123;"{""ip"":""192.168.1.45"",""session_id"":""n3o4p5q6"",""duration_sec"":420}"
+ 14;gkuuo-name;kkb-firstname; 13560;xdt-city;1962/04/07;sdoj-street;
35;MT;MONTANA;false;2020-01-01
00:00:00.456;"{""ip"":""10.1.2.3"",""session_id"":""r7s8t9u0"",""duration_sec"":215}"
+ 15;wdhze-name;jjk-firstname; 16900;due-city;1970/07/17;pmmu-street;
174;AS;AMERICAN SAMOA;true;2024-01-01
00:00:00.123;"{""ip"":""172.16.5.6"",""session_id"":""v1w2x3y4"",""duration_sec"":90}"
+ 16;ncayz-name;ynb-firstname; 15720;lxj-city;1974/04/27;mdtb-street;
109;MA;MASSACHUSETTS;false;2023-03-31
12:00:00.789;"{""ip"":""192.168.0.12"",""session_id"":""z5a6b7c8"",""duration_sec"":600}"
+ 17;rdjin-name;hhu-firstname; 14480;lpc-city;1958/11/16;wxik-street;
145;KY;KENTUCKY;true;2022-09-01
05:59:59.123;"{""ip"":""192.168.1.10"",""session_id"":""a1b2c3d4"",""duration_sec"":120}"
+ 18;nxzij-name;bdl-firstname; 10740;avx-city;1958/02/20;nybz-street;
138;WI;WISCONSIN;false;2022-01-01
00:00:00.000;"{""ip"":""10.0.0.5"",""session_id"":""f5g6h7i8"",""duration_sec"":300}"
+ 19;xgrzc-name;dxw-firstname; 18900;vpq-city;1990/11/16;wzjh-street;
58;ME;MAINE;true;2021-01-01
00:00:00.123;"{""ip"":""172.16.0.23"",""session_id"":""j9k0l1m2"",""duration_sec"":45}"
+ 20;ehgrn-name;vbe-firstname; 17500;cik-city;1978/05/21;ucnw-street;
135;MD;MARYLAND;false;2020-01-01
00:00:00.456;"{""ip"":""192.168.1.45"",""session_id"":""n3o4p5q6"",""duration_sec"":420}"
+ 21;gctjx-name;upx-firstname; 11960;yqr-city;1958/03/03;rlko-street;
141;TN;TENNESSEE;true;2019-01-01
00:00:00.789;"{""ip"":""10.1.2.3"",""session_id"":""r7s8t9u0"",""duration_sec"":215}"
+ 22;ptzmg-name;hva-firstname; 15740;gux-city;1978/05/04;pugy-street;
122;VI;VIRGIN ISLANDS;false;2023-03-31
12:00:00.789;"{""ip"":""172.16.5.6"",""session_id"":""v1w2x3y4"",""duration_sec"":90}"
+ 23;eyeti-name;gnw-firstname; 17420;eko-city;1962/10/26;ylph-street;
61;NC;NORTH CAROLINA;true;2022-09-01
05:59:59.123;"{""ip"":""192.168.0.12"",""session_id"":""z5a6b7c8"",""duration_sec"":600}"
+ 24;wccwo-name;zpj-firstname; 16600;uim-city;1962/09/29;ygih-street;
26;WA;WASHINGTON;false;2022-01-01
00:00:00.000;"{""ip"":""10.0.3.4"",""session_id"":""d9e0f1g2"",""duration_sec"":180}"
+ 25;bwkoe-name;ayl-firstname; 18660;rtw-city;1978/07/16;mzww-street;
179;CA;CALIFORNIA;true;2021-01-01
00:00:00.123;"{""ip"":""172.16.8.9"",""session_id"":""h3i4j5k6"",""duration_sec"":75}"
+ 26;rezku-name;zio-firstname; 19080;nvt-city;1982/07/14;wwkd-street;
91;CA;CALIFORNIA;false;2023-03-31
12:00:00.789;"{""ip"":""192.168.2.34"",""session_id"":""l7m8n9o0"",""duration_sec"":330}"
+ 27;mjlsk-name;ecx-firstname; 10800;yxu-city;1950/12/11;vttb-street;
195;MO;MISSOURI;true;2022-09-01
05:59:59.123;"{""ip"":""10.0.0.5"",""session_id"":""f5g6h7i8"",""duration_sec"":300}"
+ 28;wdjsi-name;aoq-firstname; 13660;smo-city;1954/02/01;kako-street;
7;NV;NEVADA;false;2022-01-01
00:00:00.000;"{""ip"":""192.168.1.10"",""session_id"":""a1b2c3d4"",""duration_sec"":120}"
+ 29;mwfnd-name;nyb-firstname; 19760;bbu-city;1986/09/23;apdi-street;
91;MS;MISSISSIPPI;true;2021-01-01
00:00:00.123;"{""ip"":""10.0.0.5"",""session_id"":""f5g6h7i8"",""duration_sec"":300}"
+ 30;vtuoz-name;jhh-firstname; 17620;vad-city;1982/05/05;kzup-street;
79;GA;GEORGIA;false;2020-01-01
00:00:00.456;"{""ip"":""172.16.0.23"",""session_id"":""j9k0l1m2"",""duration_sec"":45}"
+ 31;rhhxk-name;ndr-firstname; 16760;fub-city;1978/11/12;regd-street;
55;OK;OKLAHOMA;true;2019-01-01
00:00:00.789;"{""ip"":""192.168.1.45"",""session_id"":""n3o4p5q6"",""duration_sec"":420}"
+ 32;lpstk-name;mqz-firstname; 18940;tnr-city;1982/09/16;cdhf-street;
4;SD;SOUTH DAKOTA;false;2023-03-31
12:00:00.789;"{""ip"":""10.1.2.3"",""session_id"":""r7s8t9u0"",""duration_sec"":215}"
+ 33;ldhyr-name;yts-firstname; 12000;auk-city;1986/11/14;abph-street;
147;IN;INDIANA;true;2022-09-01
05:59:59.123;"{""ip"":""172.16.5.6"",""session_id"":""v1w2x3y4"",""duration_sec"":90}"
+ 34;cjdml-name;iti-firstname; 16900;wkq-city;1970/06/05;npow-street; 96;NH;NEW
HAMPSHIRE;false;2022-01-01
00:00:00.000;"{""ip"":""192.168.0.12"",""session_id"":""z5a6b7c8"",""duration_sec"":600}"
+ 35;cpenz-name;sbi-firstname; 16380;ssl-city;1962/08/19;kilz-street;
44;MS;MISSISSIPPI;true;2021-01-01
00:00:00.123;"{""ip"":""10.0.3.4"",""session_id"":""d9e0f1g2"",""duration_sec"":180}"
+ 36;rxtbg-name;anr-firstname; 14720;bqc-city;1958/08/10;pudg-street;
140;NV;NEVADA;false;2020-01-01
00:00:00.456;"{""ip"":""172.16.8.9"",""session_id"":""h3i4j5k6"",""duration_sec"":75}"
+ 37;udblf-name;raa-firstname; 11500;wli-city;1978/12/13;xomd-street;
41;PW;PALAU;true;2019-01-01
00:00:00.789;"{""ip"":""192.168.2.34"",""session_id"":""l7m8n9o0"",""duration_sec"":330}"
+ 38;vvyce-name;gep-firstname; 13740;gtd-city;1982/05/23;kwbv-street;
123;undefined;undefined;false;2023-03-31
12:00:00.789;"{""ip"":""10.0.0.5"",""session_id"":""f5g6h7i8"",""duration_sec"":300}"
+ 39;kwfnz-name;ucu-firstname; 10580;sns-city;1978/08/18;nnun-street;
20;OK;OKLAHOMA;true;2022-09-01
05:59:59.123;"{""ip"":""192.168.0.12"",""session_id"":""z5a6b7c8"",""duration_sec"":600}"
+ 40;zxydx-name;tml-firstname; 14680;jda-city;1974/05/29;wfjn-street;
157;DC;DISTRICT OF COLUMBIA;false;2022-01-01
00:00:00.000;"{""ip"":""192.168.1.10"",""session_id"":""a1b2c3d4"",""duration_sec"":120}"
+ 41;bfscx-name;jnl-firstname; 16920;yyg-city;1970/11/30;cgfh-street;
178;CO;COLORADO;true;2021-01-01
00:00:00.123;"{""ip"":""10.0.0.5"",""session_id"":""f5g6h7i8"",""duration_sec"":300}"
+ 42;qitur-name;yra-firstname; 15560;ijp-city;1978/01/30;fonc-street;
155;AK;ALASKA;false;2020-01-01
00:00:00.456;"{""ip"":""172.16.0.23"",""session_id"":""j9k0l1m2"",""duration_sec"":45}"
+ 43;msixi-name;ynb-firstname; 12720;ksl-city;1958/07/17;zpjw-street;
46;VI;VIRGIN ISLANDS;true;2024-01-01
00:00:00.123;"{""ip"":""192.168.1.45"",""session_id"":""n3o4p5q6"",""duration_sec"":420}"
+ 44;wzkjq-name;rgh-firstname; 19000;hkm-city;1974/08/12;yixf-street;
134;CA;CALIFORNIA;false;2023-03-31
12:00:00.789;"{""ip"":""10.1.2.3"",""session_id"":""r7s8t9u0"",""duration_sec"":215}"
+ 45;dqfmf-name;yxr-firstname; 13840;vie-city;1962/10/23;stvx-street;
39;TX;TEXAS;true;2022-09-01
05:59:59.123;"{""ip"":""172.16.5.6"",""session_id"":""v1w2x3y4"",""duration_sec"":90}"
+ 46;biluz-name;uqe-firstname; 17760;wkq-city;1962/07/27;embn-street;
183;PW;PALAU;false;2022-01-01
00:00:00.000;"{""ip"":""192.168.0.12"",""session_id"":""z5a6b7c8"",""duration_sec"":600}"
+ 47;wahfx-name;zwd-firstname; 13240;vic-city;1974/03/27;axpw-street;
131;UT;UTAH;true;2021-01-01
00:00:00.123;"{""ip"":""10.0.3.4"",""session_id"":""d9e0f1g2"",""duration_sec"":180}"
+ 48;denwt-name;bta-firstname; 17300;hhj-city;1986/12/20;orwy-street;
11;WV;WEST VIRGINIA;false;2020-01-01
00:00:00.456;"{""ip"":""172.16.8.9"",""session_id"":""h3i4j5k6"",""duration_sec"":75}"
+ 49;akdmy-name;ybz-firstname; 14560;wtx-city;1962/11/08;nwba-street;
123;MP;NORTHERN MARIANA ISLANDS;true;2019-01-01
00:00:00.789;"{""ip"":""192.168.2.34"",""session_id"":""l7m8n9o0"",""duration_sec"":330}"
+ 50;hqafg-name;nht-firstname; 16080;gfu-city;1951/01/12;spsq-street;
45;LA;LOUISIANA;false;2023-03-31
12:00:00.789;"{""ip"":""10.0.0.5"",""session_id"":""f5g6h7i8"",""duration_sec"":300}"
+ 51;zhmbl-name;lnw-firstname; 17460;hse-city;1986/12/21;scis-street;
97;GA;GEORGIA;true;2022-09-01
05:59:59.123;"{""ip"":""192.168.1.10"",""session_id"":""a1b2c3d4"",""duration_sec"":120}"
+ 52;snwnj-name;jyy-firstname; 16400;hsz-city;1966/02/15;imhl-street;
42;NC;NORTH CAROLINA;false;2022-01-01
00:00:00.000;"{""ip"":""10.0.0.5"",""session_id"":""f5g6h7i8"",""duration_sec"":300}"
+ 53;fuyla-name;mmp-firstname; 11840;hgu-city;1986/08/16;ixiz-street;
145;NC;NORTH CAROLINA;true;2021-01-01
00:00:00.123;"{""ip"":""172.16.0.23"",""session_id"":""j9k0l1m2"",""duration_sec"":45}"
+ 54;yvfqz-name;prz-firstname; 11260;wjl-city;1982/05/06;fbzd-street;
97;MO;MISSOURI;false;2023-03-31
12:00:00.789;"{""ip"":""192.168.1.45"",""session_id"":""n3o4p5q6"",""duration_sec"":420}"
+ 55;usbgq-name;vhd-firstname; 14080;dsb-city;1958/04/01;ggoc-street;
54;KS;KANSAS;true;2022-09-01
05:59:59.123;"{""ip"":""10.1.2.3"",""session_id"":""r7s8t9u0"",""duration_sec"":215}"
+ 56;yaeni-name;zpy-firstname; 19100;sen-city;1954/12/10;sbsw-street;
158;HI;HAWAII;false;2023-03-31
12:00:00.789;"{""ip"":""172.16.5.6"",""session_id"":""v1w2x3y4"",""duration_sec"":90}"
+ 57;fgxvr-name;vzi-firstname; 17520;lcf-city;1958/11/01;nbdv-street;
10;GU;GUAM;true;2022-09-01
05:59:59.123;"{""ip"":""192.168.0.12"",""session_id"":""z5a6b7c8"",""duration_sec"":600}"
+ 58;tqpbq-name;rwr-firstname; 19140;zpd-city;1978/08/23;npvb-street;
190;DC;DISTRICT OF COLUMBIA;false;2022-01-01
00:00:00.000;"{""ip"":""10.0.3.4"",""session_id"":""d9e0f1g2"",""duration_sec"":180}"
+ 59;ieigg-name;ayq-firstname; 12960;ljc-city;1962/07/05;dnjz-street;
163;FL;FLORIDA;true;2021-01-01
00:00:00.123;"{""ip"":""172.16.8.9"",""session_id"":""h3i4j5k6"",""duration_sec"":75}"
+ 60;rfvzu-name;edm-firstname; 13340;kvz-city;1954/12/08;eijd-street;
4;RI;RHODE ISLAND;false;2020-01-01
00:00:00.456;"{""ip"":""192.168.2.34"",""session_id"":""l7m8n9o0"",""duration_sec"":330}"
+ 61;pduwm-name;gqb-firstname; 14240;cyr-city;1954/07/03;ndux-street;
13;SD;SOUTH DAKOTA;true;2019-01-01
00:00:00.789;"{""ip"":""192.168.0.12"",""session_id"":""z5a6b7c8"",""duration_sec"":600}"
+ 62;yyixf-name;yzt-firstname; 18020;lwx-city;1974/01/29;iede-street;
120;NV;NEVADA;false;2023-03-31
12:00:00.789;"{""ip"":""192.168.1.10"",""session_id"":""a1b2c3d4"",""duration_sec"":120}"
+ 63;dkszq-name;ytd-firstname; 14700;zwh-city;1979/01/11;nbjz-street;
65;AS;AMERICAN SAMOA;true;2022-09-01
05:59:59.123;"{""ip"":""10.0.0.5"",""session_id"":""f5g6h7i8"",""duration_sec"":300}"
+ 64;slkzv-name;zbg-firstname; 19880;oee-city;1978/11/01;sphg-street;
119;OK;OKLAHOMA;false;2022-01-01
00:00:00.000;"{""ip"":""172.16.0.23"",""session_id"":""j9k0l1m2"",""duration_sec"":45}"
+ 65;nvxim-name;phc-firstname; 19220;vgg-city;1991/01/24;juok-street;
106;FM;FEDERATED STATES OF MICRONESIA;true;2021-01-01
00:00:00.123;"{""ip"":""192.168.1.45"",""session_id"":""n3o4p5q6"",""duration_sec"":420}"
+ 66;piyfg-name;xtn-firstname; 13760;nde-city;1954/07/22;vfrv-street; 11;NY;NEW
YORK;false;2020-01-01
00:00:00.456;"{""ip"":""10.1.2.3"",""session_id"":""r7s8t9u0"",""duration_sec"":215}"
+ 67;jnusz-name;mjw-firstname; 12640;nwb-city;1986/08/23;kcsa-street;
138;VA;VIRGINIA;true;2024-01-01
00:00:00.123;"{""ip"":""172.16.5.6"",""session_id"":""v1w2x3y4"",""duration_sec"":90}"
+ 68;jnypj-name;ioq-firstname; 17000;zqy-city;1986/01/09;croe-street;
119;PW;PALAU;false;2023-03-31
12:00:00.789;"{""ip"":""192.168.0.12"",""session_id"":""z5a6b7c8"",""duration_sec"":600}"
+ 69;uohts-name;btx-firstname; 13480;dal-city;1990/10/22;llyw-street;
150;WA;WASHINGTON;true;2022-09-01
05:59:59.123;"{""ip"":""10.0.3.4"",""session_id"":""d9e0f1g2"",""duration_sec"":180}"
+ 70;aavpj-name;pvw-firstname; 13780;lai-city;1954/09/23;nygu-street;
171;FL;FLORIDA;false;2022-01-01
00:00:00.000;"{""ip"":""172.16.8.9"",""session_id"":""h3i4j5k6"",""duration_sec"":75}"
+ 71;nbjcj-name;rsf-firstname; 12000;kjl-city;1986/06/30;ijsb-street;
123;ID;IDAHO;true;2021-01-01
00:00:00.123;"{""ip"":""192.168.2.34"",""session_id"":""l7m8n9o0"",""duration_sec"":330}"
+ 72;syjxh-name;gkq-firstname; 19960;rmd-city;1978/10/26;qmyp-street;
161;MN;MINNESOTA;false;2020-01-01
00:00:00.456;"{""ip"":""10.0.0.5"",""session_id"":""f5g6h7i8"",""duration_sec"":300}"
+ 73;vkojz-name;ryo-firstname; 14300;bmz-city;1954/09/11;gcpj-street;
71;ND;NORTH DAKOTA;true;2019-01-01
00:00:00.789;"{""ip"":""192.168.1.10"",""session_id"":""a1b2c3d4"",""duration_sec"":120}"
+ 74;pqzfw-name;kld-firstname; 16400;qvq-city;1962/09/09;dhbv-street;
92;ND;NORTH DAKOTA;false;2023-03-31
12:00:00.789;"{""ip"":""10.0.0.5"",""session_id"":""f5g6h7i8"",""duration_sec"":300}"
+ 75;owvjk-name;fez-firstname; 19740;ldb-city;1978/06/14;kabf-street;
87;VA;VIRGINIA;true;2022-09-01
05:59:59.123;"{""ip"":""172.16.0.23"",""session_id"":""j9k0l1m2"",""duration_sec"":45}"
+ 76;qsfih-name;ixe-firstname; 16860;qvr-city;1987/01/07;qean-street;
159;CO;COLORADO;false;2022-01-01
00:00:00.000;"{""ip"":""192.168.1.45"",""session_id"":""n3o4p5q6"",""duration_sec"":420}"
+ 77;slixq-name;gmb-firstname; 19980;ftt-city;1982/06/22;xinx-street;
111;VT;VERMONT;true;2021-01-01
00:00:00.123;"{""ip"":""10.1.2.3"",""session_id"":""r7s8t9u0"",""duration_sec"":215}"
+ 78;eegsa-name;xlc-firstname; 12680;byk-city;1954/04/23;beul-street;
56;MD;MARYLAND;false;2023-03-31
12:00:00.789;"{""ip"":""172.16.5.6"",""session_id"":""v1w2x3y4"",""duration_sec"":90}"
+ 79;phevp-name;ihs-firstname; 16120;adc-city;1978/04/25;voig-street; 98;NM;NEW
MEXICO;true;2022-09-01
05:59:59.123;"{""ip"":""192.168.0.12"",""session_id"":""z5a6b7c8"",""duration_sec"":600}"
+ 80;njfoe-name;tag-firstname; 16580;tnr-city;1966/12/04;dhky-street;
108;LA;LOUISIANA;false;2023-03-31
12:00:00.789;"{""ip"":""10.0.3.4"",""session_id"":""d9e0f1g2"",""duration_sec"":180}"
+ 81;bdncx-name;hcd-firstname; 11260;xcl-city;1970/07/02;jvlp-street;
49;GA;GEORGIA;true;2022-09-01
05:59:59.123;"{""ip"":""172.16.8.9"",""session_id"":""h3i4j5k6"",""duration_sec"":75}"
+ 82;ikedo-name;tks-firstname; 17460;odl-city;1958/08/25;iaaq-street;
8;GU;GUAM;false;2022-01-01
00:00:00.000;"{""ip"":""192.168.2.34"",""session_id"":""l7m8n9o0"",""duration_sec"":330}"
+ 83;iafxy-name;vur-firstname; 11480;hgt-city;1962/08/03;hmec-street;
164;TX;TEXAS;true;2021-01-01
00:00:00.123;"{""ip"":""192.168.0.12"",""session_id"":""z5a6b7c8"",""duration_sec"":600}"
+ 84;lafhf-name;ssz-firstname; 19560;wwp-city;1951/01/25;mxmq-street;
96;IN;INDIANA;false;2020-01-01
00:00:00.456;"{""ip"":""192.168.1.10"",""session_id"":""a1b2c3d4"",""duration_sec"":120}"
+ 85;okyny-name;hbu-firstname; 16800;yok-city;1978/03/28;ipjz-street;
135;NV;NEVADA;true;2019-01-01
00:00:00.789;"{""ip"":""10.0.0.5"",""session_id"":""f5g6h7i8"",""duration_sec"":300}"
+ 86;hznby-name;fwy-firstname; 13680;wbi-city;1970/07/25;mxui-street;
170;CT;CONNECTICUT;false;2023-03-31
12:00:00.789;"{""ip"":""172.16.0.23"",""session_id"":""j9k0l1m2"",""duration_sec"":45}"
+ 87;ztpoa-name;rzk-firstname; 18500;qum-city;1970/07/26;blqr-street;
152;ME;MAINE;true;2022-09-01
05:59:59.123;"{""ip"":""192.168.1.45"",""session_id"":""n3o4p5q6"",""duration_sec"":420}"
+ 88;gitxz-name;axt-firstname; 11800;fck-city;1974/01/12;tmjw-street;
189;SD;SOUTH DAKOTA;false;2022-01-01
00:00:00.000;"{""ip"":""10.1.2.3"",""session_id"":""r7s8t9u0"",""duration_sec"":215}"
+ 89;ziomm-name;mcv-firstname; 12940;iwq-city;1950/10/22;hqgj-street;
140;DC;DISTRICT OF COLUMBIA;true;2021-01-01
00:00:00.123;"{""ip"":""172.16.5.6"",""session_id"":""v1w2x3y4"",""duration_sec"":90}"
+ 90;otncg-name;tuy-firstname; 16540;ulk-city;1971/01/24;yuia-street;
166;TX;TEXAS;false;2020-01-01
00:00:00.456;"{""ip"":""192.168.0.12"",""session_id"":""z5a6b7c8"",""duration_sec"":600}"
+ 91;cnabb-name;hoq-firstname; 16300;tuw-city;1962/06/17;ujvv-street;
61;ME;MAINE;true;2024-01-01
00:00:00.123;"{""ip"":""10.0.3.4"",""session_id"":""d9e0f1g2"",""duration_sec"":180}"
+ 92;ucogf-name;ggc-firstname; 14500;fsj-city;1978/02/08;asfi-street;
53;WV;WEST VIRGINIA;false;2023-03-31
12:00:00.789;"{""ip"":""172.16.8.9"",""session_id"":""h3i4j5k6"",""duration_sec"":75}"
+ 93;lbpmf-name;sdt-firstname; 10780;ewj-city;1978/03/08;hxsp-street;
102;NV;NEVADA;true;2022-09-01
05:59:59.123;"{""ip"":""192.168.2.34"",""session_id"":""l7m8n9o0"",""duration_sec"":330}"
+ 94;tieqq-name;uyu-firstname; 17740;wea-city;1966/10/31;abpl-street;
187;MO;MISSOURI;false;2022-01-01
00:00:00.000;"{""ip"":""10.0.0.5"",""session_id"":""f5g6h7i8"",""duration_sec"":300}"
+ 95;fsgwf-name;vjd-firstname; 12460;ads-city;1970/11/29;yeou-street;
10;MA;MASSACHUSETTS;true;2021-01-01
00:00:00.123;"{""ip"":""192.168.1.10"",""session_id"":""a1b2c3d4"",""duration_sec"":120}"
+ 96;reeba-name;kzs-firstname; 13100;zhc-city;1966/07/08;abmv-street;
88;FL;FLORIDA;false;2020-01-01
00:00:00.456;"{""ip"":""10.0.0.5"",""session_id"":""f5g6h7i8"",""duration_sec"":300}"
+ 97;shybc-name;gcp-firstname; 10660;ahg-city;1950/12/15;hrqy-street;
174;KS;KANSAS;true;2019-01-01
00:00:00.789;"{""ip"":""172.16.0.23"",""session_id"":""j9k0l1m2"",""duration_sec"":45}"
+ 98;phszr-name;sst-firstname; 13080;ydd-city;1954/09/23;quqn-street;
2;RI;RHODE ISLAND;false;2023-03-31
12:00:00.789;"{""ip"":""192.168.1.45"",""session_id"":""n3o4p5q6"",""duration_sec"":420}"
+ 99;jteco-name;fxc-firstname; 19760;agr-city;1986/05/06;dzxc-street;
108;MD;MARYLAND;true;2022-09-01
05:59:59.123;"{""ip"":""10.1.2.3"",""session_id"":""r7s8t9u0"",""duration_sec"":215}"
+ 100;qvaar-name;icx-firstname; 16120;boc-city;1978/08/04;bfzf-street;
12;NM;NEW MEXICO;false;2022-01-01
00:00:00.000;"{""ip"":""172.16.5.6"",""session_id"":""v1w2x3y4"",""duration_sec"":90}"
diff --git
a/integration-tests/transforms/metadata/dataset/golden-parquet-input.json
b/integration-tests/transforms/metadata/dataset/golden-parquet-input.json
index c7b7ea52dd..753123b113 100644
--- a/integration-tests/transforms/metadata/dataset/golden-parquet-input.json
+++ b/integration-tests/transforms/metadata/dataset/golden-parquet-input.json
@@ -8,80 +8,104 @@
"field_length": -1,
"field_type": 5,
"field_precision": 0,
- "field_format": "####0;-####0",
- "field_name": "id"
+ "field_name": "id",
+ "field_format": "####0;-####0"
},
{
"field_comment": "",
"field_length": -1,
"field_type": 2,
"field_precision": -1,
- "field_format": "",
- "field_name": "name"
+ "field_name": "name",
+ "field_format": ""
},
{
"field_comment": "",
"field_length": -1,
"field_type": 2,
"field_precision": -1,
- "field_format": "",
- "field_name": "firstname"
+ "field_name": "firstname",
+ "field_format": ""
},
{
"field_comment": "",
"field_length": -1,
"field_type": 5,
"field_precision": 0,
- "field_format": "####0;-####0",
- "field_name": "zip"
+ "field_name": "zip",
+ "field_format": "####0;-####0"
},
{
"field_comment": "",
"field_length": -1,
"field_type": 2,
"field_precision": -1,
- "field_format": "",
- "field_name": "city"
+ "field_name": "city",
+ "field_format": ""
},
{
"field_comment": "",
"field_length": -1,
"field_type": 3,
"field_precision": -1,
- "field_format": "yyyy/MM/dd",
- "field_name": "birthdate"
+ "field_name": "birthdate",
+ "field_format": "yyyy/MM/dd"
},
{
"field_comment": "",
"field_length": -1,
"field_type": 2,
"field_precision": -1,
- "field_format": "",
- "field_name": "street"
+ "field_name": "street",
+ "field_format": ""
},
{
"field_comment": "",
"field_length": -1,
"field_type": 5,
"field_precision": 0,
- "field_format": "####0;-####0",
- "field_name": "housenr"
+ "field_name": "housenr",
+ "field_format": "####0;-####0"
},
{
"field_comment": "",
"field_length": -1,
"field_type": 2,
"field_precision": -1,
- "field_format": "",
- "field_name": "stateCode"
+ "field_name": "stateCode",
+ "field_format": ""
},
{
"field_comment": "",
"field_length": -1,
"field_type": 2,
"field_precision": -1,
- "field_format": "",
- "field_name": "state"
+ "field_name": "state",
+ "field_format": ""
+ },
+ {
+ "field_comment": "",
+ "field_length": -1,
+ "field_type": 4,
+ "field_precision": -1,
+ "field_name": "isActive",
+ "field_format": ""
+ },
+ {
+ "field_comment": "",
+ "field_length": -1,
+ "field_type": 9,
+ "field_precision": -1,
+ "field_name": "registrationTimestamp",
+ "field_format": ""
+ },
+ {
+ "field_comment": "",
+ "field_length": -1,
+ "field_type": 11,
+ "field_precision": -1,
+ "field_name": "metadataJson",
+ "field_format": ""
}
],
"folder_name": ""
diff --git a/integration-tests/transforms/metadata/unit-test/0029-parquet-input
UNIT.json b/integration-tests/transforms/metadata/unit-test/0029-parquet-input
UNIT.json
index f90e98b5bd..570cefbbae 100644
--- a/integration-tests/transforms/metadata/unit-test/0029-parquet-input
UNIT.json
+++ b/integration-tests/transforms/metadata/unit-test/0029-parquet-input
UNIT.json
@@ -1,7 +1,10 @@
{
- "variableValues": [],
"database_replacements": [],
"autoOpening": true,
+ "description": "",
+ "persist_filename": "",
+ "test_type": "UNIT_TEST",
+ "variableValues": [],
"basePath": "",
"golden_data_sets": [
{
@@ -45,20 +48,29 @@
{
"transform_field": "zip",
"data_set_field": "zip"
+ },
+ {
+ "transform_field": "isActive",
+ "data_set_field": "isActive"
+ },
+ {
+ "transform_field": "registrationTimestamp",
+ "data_set_field": "registrationTimestamp"
+ },
+ {
+ "transform_field": "metadataJson",
+ "data_set_field": "metadataJson"
}
],
"field_order": [
"id"
],
- "transform_name": "Verify",
- "data_set_name": "golden-parquet-input"
+ "data_set_name": "golden-parquet-input",
+ "transform_name": "Verify"
}
],
"input_data_sets": [],
"name": "0029-parquet-input UNIT",
- "description": "",
"trans_test_tweaks": [],
- "persist_filename": "",
- "pipeline_filename": "./0029-parquet-input.hpl",
- "test_type": "UNIT_TEST"
+ "pipeline_filename": "./0029-parquet-input.hpl"
}
\ No newline at end of file
diff --git
a/plugins/tech/parquet/src/main/java/org/apache/hop/parquet/transforms/input/ParquetInputMeta.java
b/plugins/tech/parquet/src/main/java/org/apache/hop/parquet/transforms/input/ParquetInputMeta.java
index 820b0ba356..274fbbdbfd 100644
---
a/plugins/tech/parquet/src/main/java/org/apache/hop/parquet/transforms/input/ParquetInputMeta.java
+++
b/plugins/tech/parquet/src/main/java/org/apache/hop/parquet/transforms/input/ParquetInputMeta.java
@@ -42,6 +42,13 @@ import org.apache.hop.pipeline.transform.BaseTransformMeta;
import org.apache.hop.pipeline.transform.TransformMeta;
import org.apache.parquet.column.ColumnDescriptor;
import org.apache.parquet.hadoop.ParquetReader;
+import org.apache.parquet.schema.LogicalTypeAnnotation;
+import
org.apache.parquet.schema.LogicalTypeAnnotation.DateLogicalTypeAnnotation;
+import
org.apache.parquet.schema.LogicalTypeAnnotation.DecimalLogicalTypeAnnotation;
+import
org.apache.parquet.schema.LogicalTypeAnnotation.IntLogicalTypeAnnotation;
+import
org.apache.parquet.schema.LogicalTypeAnnotation.JsonLogicalTypeAnnotation;
+import
org.apache.parquet.schema.LogicalTypeAnnotation.TimeLogicalTypeAnnotation;
+import
org.apache.parquet.schema.LogicalTypeAnnotation.TimestampLogicalTypeAnnotation;
import org.apache.parquet.schema.MessageType;
import org.apache.parquet.schema.PrimitiveType;
@@ -148,21 +155,38 @@ public class ParquetInputMeta extends
BaseTransformMeta<ParquetInput, ParquetInp
}
PrimitiveType primitiveType = column.getPrimitiveType();
int hopType = IValueMeta.TYPE_STRING;
- switch (primitiveType.getPrimitiveTypeName()) {
- case INT32, INT64:
- hopType = IValueMeta.TYPE_INTEGER;
- break;
- case INT96:
+ LogicalTypeAnnotation logicalType =
primitiveType.getLogicalTypeAnnotation();
+ if (logicalType != null) {
+ if ((logicalType instanceof TimestampLogicalTypeAnnotation)
+ || (logicalType instanceof TimeLogicalTypeAnnotation)) {
hopType = IValueMeta.TYPE_TIMESTAMP;
- break;
- case FLOAT, DOUBLE:
- hopType = IValueMeta.TYPE_NUMBER;
- break;
- case BOOLEAN:
- hopType = IValueMeta.TYPE_BOOLEAN;
- break;
- default:
- break;
+ } else if (logicalType instanceof DateLogicalTypeAnnotation) {
+ hopType = IValueMeta.TYPE_DATE;
+ } else if (logicalType instanceof JsonLogicalTypeAnnotation) {
+ hopType = IValueMeta.TYPE_JSON;
+ } else if (logicalType instanceof DecimalLogicalTypeAnnotation) {
+ hopType = IValueMeta.TYPE_BIGNUMBER;
+ } else if (logicalType instanceof IntLogicalTypeAnnotation) {
+ hopType = IValueMeta.TYPE_INTEGER;
+ }
+ } else {
+ switch (primitiveType.getPrimitiveTypeName()) {
+ case INT32, INT64:
+ hopType = IValueMeta.TYPE_INTEGER;
+ break;
+ case INT96:
+ hopType = IValueMeta.TYPE_BINARY;
+ break;
+ case FLOAT, DOUBLE:
+ hopType = IValueMeta.TYPE_NUMBER;
+ break;
+ case BOOLEAN:
+ hopType = IValueMeta.TYPE_BOOLEAN;
+ break;
+ case BINARY:
+ hopType = IValueMeta.TYPE_BINARY;
+ break;
+ }
}
IValueMeta valueMeta = ValueMetaFactory.createValueMeta(sourceField,
hopType, -1, -1);
rowMeta.addValueMeta(valueMeta);
diff --git
a/plugins/tech/parquet/src/main/java/org/apache/hop/parquet/transforms/input/ParquetRowConverter.java
b/plugins/tech/parquet/src/main/java/org/apache/hop/parquet/transforms/input/ParquetRowConverter.java
index 95bda47002..5ff78fb73c 100644
---
a/plugins/tech/parquet/src/main/java/org/apache/hop/parquet/transforms/input/ParquetRowConverter.java
+++
b/plugins/tech/parquet/src/main/java/org/apache/hop/parquet/transforms/input/ParquetRowConverter.java
@@ -55,7 +55,10 @@ public class ParquetRowConverter extends GroupConverter {
}
}
- return new ParquetValueConverter(group, rowIndex);
+ return new ParquetValueConverter(
+ group,
+ rowIndex,
+
messageType.getColumns().get(schemaIndex).getPrimitiveType().getLogicalTypeAnnotation());
}
@Override
diff --git
a/plugins/tech/parquet/src/main/java/org/apache/hop/parquet/transforms/input/ParquetValueConverter.java
b/plugins/tech/parquet/src/main/java/org/apache/hop/parquet/transforms/input/ParquetValueConverter.java
index 6328809ac0..21c4c12380 100644
---
a/plugins/tech/parquet/src/main/java/org/apache/hop/parquet/transforms/input/ParquetValueConverter.java
+++
b/plugins/tech/parquet/src/main/java/org/apache/hop/parquet/transforms/input/ParquetValueConverter.java
@@ -17,27 +17,38 @@
package org.apache.hop.parquet.transforms.input;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.sql.Timestamp;
+import java.time.LocalDate;
+import java.time.ZoneId;
import java.util.Date;
+import java.util.TimeZone;
import org.apache.hop.core.RowMetaAndData;
import org.apache.hop.core.row.IValueMeta;
import org.apache.parquet.io.api.Binary;
import org.apache.parquet.io.api.PrimitiveConverter;
+import org.apache.parquet.schema.LogicalTypeAnnotation;
+import
org.apache.parquet.schema.LogicalTypeAnnotation.DateLogicalTypeAnnotation;
+import
org.apache.parquet.schema.LogicalTypeAnnotation.DecimalLogicalTypeAnnotation;
public class ParquetValueConverter extends PrimitiveConverter {
private final RowMetaAndData group;
private final IValueMeta valueMeta;
private final int rowIndex;
+ private final LogicalTypeAnnotation logicalTypeAnnotation;
- public ParquetValueConverter(RowMetaAndData group, int rowIndex) {
+ public ParquetValueConverter(
+ RowMetaAndData group, int rowIndex, LogicalTypeAnnotation
logicalTypeAnnotation) {
this.group = group;
this.valueMeta = group.getValueMeta(rowIndex);
this.rowIndex = rowIndex;
+ this.logicalTypeAnnotation = logicalTypeAnnotation;
}
@Override
@@ -57,9 +68,27 @@ public class ParquetValueConverter extends
PrimitiveConverter {
try {
object = new BigDecimal(value.toStringUsingUTF8());
} catch (NumberFormatException e) {
- object = binaryToDecimal(value, valueMeta.getLength(),
valueMeta.getPrecision());
+ if ((this.logicalTypeAnnotation instanceof
DecimalLogicalTypeAnnotation)) {
+ object =
+ binaryToDecimal(
+ value,
+ ((DecimalLogicalTypeAnnotation)
this.logicalTypeAnnotation).getPrecision(),
+ ((DecimalLogicalTypeAnnotation)
this.logicalTypeAnnotation).getScale());
+ } else {
+ object = binaryToDecimal(value, valueMeta.getLength(),
valueMeta.getPrecision());
+ }
}
break;
+ case IValueMeta.TYPE_JSON:
+ JsonNode node = null;
+ try {
+ ObjectMapper mapper = new ObjectMapper();
+ node = mapper.readTree(value.toStringUsingUTF8());
+ } catch (Exception e) {
+ throw new RuntimeException("Unable to parse an json value : " +
e.getMessage());
+ }
+ object = node;
+ break;
case IValueMeta.TYPE_TIMESTAMP:
if (value.length() == 12) {
// This is a binary form of an int96 (12-byte) Timestamp with
nanosecond precision.
@@ -107,10 +136,23 @@ public class ParquetValueConverter extends
PrimitiveConverter {
object = Long.toString(value);
break;
case IValueMeta.TYPE_DATE:
- object = new Date(value);
+ if (this.logicalTypeAnnotation instanceof DateLogicalTypeAnnotation) {
+ LocalDate date = LocalDate.ofEpochDay(value);
+ Date utilDate =
Date.from(date.atStartOfDay(ZoneId.systemDefault()).toInstant());
+ object = utilDate;
+ } else {
+ object = convertToTimestamp(value, this.logicalTypeAnnotation);
+ }
break;
case IValueMeta.TYPE_BIGNUMBER:
object = new BigDecimal(value);
+ if ((this.logicalTypeAnnotation instanceof
DecimalLogicalTypeAnnotation)) {
+ int scale = ((DecimalLogicalTypeAnnotation)
this.logicalTypeAnnotation).getScale();
+ object = (new BigDecimal(((BigDecimal)
object).doubleValue())).movePointLeft(scale);
+ }
+ break;
+ case IValueMeta.TYPE_TIMESTAMP:
+ object = convertToTimestamp(value, this.logicalTypeAnnotation);
break;
default:
throw new RuntimeException(
@@ -175,6 +217,60 @@ public class ParquetValueConverter extends
PrimitiveConverter {
addLong(value);
}
+ /**
+ * Converts a numeric epoch timestamp (in millis, micros, or nanos) into a
java.sql.Timestamp
+ * according to the logical type's time unit.
+ *
+ * @param value
+ * @param logicalTypeAnnotation
+ */
+ private Timestamp convertToTimestamp(long value, LogicalTypeAnnotation
logicalTypeAnnotation) {
+ LogicalTypeAnnotation.TimeUnit unit = null;
+ boolean isUTC = true;
+ if (logicalTypeAnnotation instanceof
LogicalTypeAnnotation.TimestampLogicalTypeAnnotation) {
+ unit =
+ ((LogicalTypeAnnotation.TimestampLogicalTypeAnnotation)
logicalTypeAnnotation).getUnit();
+ isUTC =
+ ((LogicalTypeAnnotation.TimestampLogicalTypeAnnotation)
this.logicalTypeAnnotation)
+ .isAdjustedToUTC();
+ } else if (logicalTypeAnnotation instanceof
LogicalTypeAnnotation.TimeLogicalTypeAnnotation) {
+ unit = ((LogicalTypeAnnotation.TimeLogicalTypeAnnotation)
logicalTypeAnnotation).getUnit();
+ isUTC = false;
+ }
+ if (unit == null) {
+ throw new RuntimeException(
+ "Unknown timestamp unit for the logical type: " +
logicalTypeAnnotation);
+ }
+ long epochMillis;
+ // Convert the timestamp to milliseconds since the Epoch based on the
original unit
+ switch (unit) {
+ case MILLIS:
+ epochMillis = value;
+ break;
+ case MICROS:
+ epochMillis = value / 1_000L;
+ break;
+ case NANOS:
+ epochMillis = value / 1_000_000L;
+ break;
+ default:
+ throw new RuntimeException("Unknown timestamp unit: " + unit);
+ }
+ Timestamp ts = new Timestamp(epochMillis);
+ // If the timestamp is local time, adjust it to UTC
+ if (!isUTC) {
+ int offset = TimeZone.getDefault().getOffset(epochMillis);
+ ts.setTime(ts.getTime() - offset);
+ }
+ // Adjust nanosecond precision for microsecond or nanosecond timestamps
+ if (unit == LogicalTypeAnnotation.TimeUnit.MICROS) {
+ ts.setNanos((int) ((value % 1_000_000L) * 1_000L));
+ } else if (unit == LogicalTypeAnnotation.TimeUnit.NANOS) {
+ ts.setNanos((int) (value % 1_000_000_000L));
+ }
+ return ts;
+ }
+
/**
* Source code from:
*
diff --git
a/plugins/tech/parquet/src/main/java/org/apache/hop/parquet/transforms/output/ParquetOutput.java
b/plugins/tech/parquet/src/main/java/org/apache/hop/parquet/transforms/output/ParquetOutput.java
index eb0232e378..c42178c7bd 100644
---
a/plugins/tech/parquet/src/main/java/org/apache/hop/parquet/transforms/output/ParquetOutput.java
+++
b/plugins/tech/parquet/src/main/java/org/apache/hop/parquet/transforms/output/ParquetOutput.java
@@ -17,6 +17,7 @@
package org.apache.hop.parquet.transforms.output;
+import java.nio.charset.StandardCharsets;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@@ -29,7 +30,9 @@ import org.apache.hadoop.conf.Configuration;
import org.apache.hop.core.Const;
import org.apache.hop.core.RowMetaAndData;
import org.apache.hop.core.exception.HopException;
+import org.apache.hop.core.row.IRowMeta;
import org.apache.hop.core.row.IValueMeta;
+import org.apache.hop.core.row.value.ValueMetaInteger;
import org.apache.hop.core.vfs.HopVfs;
import org.apache.hop.pipeline.Pipeline;
import org.apache.hop.pipeline.PipelineMeta;
@@ -114,7 +117,40 @@ public class ParquetOutput extends
BaseTransform<ParquetOutputMeta, ParquetOutpu
// Write the row, handled by class ParquetWriteSupport
//
try {
- data.writer.write(new RowMetaAndData(getInputRowMeta(), row));
+ IRowMeta parquetRowMeta = getInputRowMeta().clone();
+
+ // convert date/timestamp => long
+ for (int i = 0; i < data.sourceFieldIndexes.size(); i++) {
+ int idx = data.sourceFieldIndexes.get(i);
+ IValueMeta valueMeta = parquetRowMeta.getValueMeta(idx);
+ if (valueMeta.getType() == IValueMeta.TYPE_TIMESTAMP) {
+ // Update of type meta
+ IValueMeta longMeta = new ValueMetaInteger(valueMeta.getName());
+ longMeta.setConversionMask(valueMeta.getConversionMask());
+ longMeta.setLength(valueMeta.getLength(), valueMeta.getPrecision());
+ parquetRowMeta.setValueMeta(idx, longMeta);
+ }
+ }
+
+ // Clone Rows and convert Date & Timetims to Long
+ Object[] parquetRow = row.clone();
+ for (int i = 0; i < data.sourceFieldIndexes.size(); i++) {
+ int idx = data.sourceFieldIndexes.get(i);
+ Object value = parquetRow[idx];
+ if (getInputRowMeta().getValueMeta(idx).getType() ==
IValueMeta.TYPE_TIMESTAMP) {
+ if (value instanceof java.util.Date) {
+ parquetRow[idx] = ((java.util.Date) value).getTime();
+ } else if (value instanceof byte[]) {
+ String dateStr = new String((byte[]) value,
StandardCharsets.UTF_8);
+ SimpleDateFormat sdf =
+ new
SimpleDateFormat(parquetRowMeta.getValueMeta(idx).getFormatMask());
+ Date date = sdf.parse(dateStr);
+ parquetRow[idx] = date.getTime();
+ }
+ }
+ }
+
+ data.writer.write(new RowMetaAndData(parquetRowMeta, parquetRow));
incrementLinesOutput();
data.splitRowCount++;
} catch (Exception e) {
@@ -162,9 +198,10 @@ public class ParquetOutput extends
BaseTransform<ParquetOutputMeta, ParquetOutpu
// Match these data types with class ParquetWriteSupport
//
+ Schema timestampMilliType;
switch (valueMeta.getType()) {
- case IValueMeta.TYPE_DATE:
- Schema timestampMilliType =
+ case IValueMeta.TYPE_TIMESTAMP, IValueMeta.TYPE_DATE:
+ timestampMilliType =
LogicalTypes.timestampMillis().addToSchema(Schema.create(Schema.Type.LONG));
fieldAssembler =
fieldAssembler
@@ -194,6 +231,12 @@ public class ParquetOutput extends
BaseTransform<ParquetOutputMeta, ParquetOutpu
case IValueMeta.TYPE_BINARY:
fieldAssembler = fieldBuilder.bytesType().noDefault();
break;
+ case IValueMeta.TYPE_JSON:
+ fieldAssembler = fieldBuilder.stringType().noDefault();
+ break;
+ case IValueMeta.TYPE_UUID:
+ fieldAssembler = fieldBuilder.stringType().noDefault();
+ break;
default:
throw new HopException(
"Writing Hop data type '"