01 / Overview
Dataset overview
Size, completeness and the main signal to check first.
- Rows
- 300No empty rows
- Columns
- 144,350 cells analyzed
- Missing cells
- 28.05%1,220 cells
- Duplicate rows
- 0Beyond the first occurrence
ambiguous dates, kept unresolved.
Values that match more than one configured date order. That is 0.0% of the 300 present date values. Tabalyst does not guess the order.
See date analysisQuality observations
Column types
- Text 10
- Integer 2
- Boolean 1
- Number 1
Semantic types
- No semantic type 13
- Date 1
Mixed: fewer than 95.0% of present values agree on one type.
02 / Structure
Columns(14)
Inferred and semantic types per column. With issues: missing values or mixed type.
Column | Missing | Distinct | Inferred type | Semantic type | Error | Examples |
|---|---|---|---|---|---|---|
| 1event_id | – | 300 | text | – | – | evt-00001evt-00002evt-00003 Values 100 / 300 evt-00001(1) evt-00002(1) evt-00003(1) evt-00014(1) evt-00026(1) evt-00041(1) evt-00050(1) evt-00082(1) evt-00095(1) evt-00120(1) evt-00137(1) evt-00166(1) evt-00172(1) evt-00198(1) evt-00215(1) evt-00222(1) evt-00249(1) evt-00273(1) evt-00288(1) evt-00291(1) |
| 2timestamp | – | 300 | text | date | – | 2026-03-01T08:00:16Z2026-03-01T08:00:17Z2026-03-01T08:01:03Z Values 100 / 300 2026-03-01T08:00:16Z(1) 2026-03-01T08:00:17Z(1) 2026-03-01T08:01:03Z(1) 2026-03-01T08:07:38Z(1) 2026-03-01T08:19:03Z(1) 2026-03-01T08:30:59Z(1) 2026-03-01T08:56:27Z(1) 2026-03-01T09:03:40Z(1) 2026-03-01T09:11:39Z(1) 2026-03-01T09:24:02Z(1) 2026-03-01T09:45:56Z(1) 2026-03-01T09:59:15Z(1) 2026-03-01T10:08:29Z(1) 2026-03-01T10:14:51Z(1) 2026-03-01T10:15:23Z(1) 2026-03-01T10:21:13Z(1) 2026-03-01T10:42:44Z(1) 2026-03-01T11:06:50Z(1) 2026-03-01T11:25:05Z(1) 2026-03-01T11:30:22Z(1) |
| 3type | – | 5 | text | – | – | page_viewclickerror Values 5 page_view(152) click(80) error(26) purchase(21) signup(21) |
| 4user.id | 23.67%71 | 60 | integer | – | – | 592534 Values 60 59(8) 25(7) 34(7) 6(7) 60(7) 43(6) 18(5) 28(5) 8(5) 9(5) 22(4) 32(4) 10(3) 13(3) 57(3) 11(2) 12(2) 4(2) 40(2) 46(2) |
| 5user.country | 15.67%47 | 5 | text | – | – | FRUSDE Values 5 FR(57) US(54) DE(53) CA(45) BE(44) |
| 6user.plan | – | 3 | text | – | – | profreeteam Values 3 pro(111) free(105) team(84) |
| 7device.os | – | 5 | text | – | – | WindowsAndroidiOS Values 5 Windows(66) Android(61) iOS(60) macOS(58) Linux(55) |
| 8device.mobile | – | 2 | boolean | – | – | falsetrue Values 2 false(171) true(129) |
| 9page | – | 8 | text | – | – | /docs/checkout/blog Values 8 /docs(51) /checkout(49) /blog(41) /login(40) /pricing(36) /(31) /docs/install(29) /signup(23) |
| 10tags[] | – | 5 | text | – | – | betanewsletterreturning Values 5 beta(95) newsletter(94) returning(93) mobile(84) promo(84) |
| 11amount | 93.0%279 | 21 | number | – | – | 151.62160.1165.74 Values 21 151.62(1) 160.1(1) 165.74(1) 203.71(1) 216.5(1) 226.44(1) 23.43(1) 232.05(1) 239.9(1) 248.12(1) 262.23(1) 269.96(1) 273.29(1) 289.62(1) 30.23(1) 47.97(1) 51.35(1) 59.65(1) 79.2(1) 91.93(1) 94.1(1) |
| 12currency | 93.0%279 | 1 | text | – | – | EUR Values 1 EUR(21) |
| 13error_code | 91.33%274 | 3 | integer | – | – | 500404503 Values 3 500(11) 404(9) 503(6) |
| 14experiment | 90.0%270 | 2 | text | – | – | AB Values 2 A(20) B(10) |
03 / Shape
JSON structure(17)
Every path of the records, containers included, with presence per parent and array lengths.
- Records
- 300300 object
- Paths
- 1714 with values
- Maximum depth
- 2Limit 64
Path | Depth | Native types | Present | Absent | Array length | Empty arrays | Role |
|---|---|---|---|---|---|---|---|
event_id | 1 | string | 100.0%300 | 0 | – | – | column |
timestamp | 1 | string | 100.0%300 | 0 | – | – | column |
type | 1 | string | 100.0%300 | 0 | – | – | column |
user | 1 | object | 100.0%300 | 0 | – | – | container |
user.id | 2 | nullinteger | 100.0%300 | 0 | – | – | column |
user.country | 2 | nullstring | 100.0%300 | 0 | – | – | column |
user.plan | 2 | string | 100.0%300 | 0 | – | – | column |
device | 1 | object | 100.0%300 | 0 | – | – | container |
device.os | 2 | string | 100.0%300 | 0 | – | – | column |
device.mobile | 2 | boolean | 100.0%300 | 0 | – | – | column |
page | 1 | string | 100.0%300 | 0 | – | – | column |
tags | 1 | array | 100.0%300 | 0 | 0–3mean 1.5 | 81 | container |
tags[] | 2 | string | items 450 | – | – | – | column |
amount | 1 | number | 7.0%21 | 279 | – | – | column |
currency | 1 | string | 7.0%21 | 279 | – | – | column |
error_code | 1 | integer | 8.67%26 | 274 | – | – | column |
experiment | 1 | string | 10.0%30 | 270 | – | – | column |
04 / Cleaning
Transformations(14)
Occurrences changed by each normalization stage, and the spellings it groups. Raw preview values remain unchanged.
Column | Unicode composed | Trimmed | Whitespace collapsed | Case folded | Accents removed | Distinct | Compared distinct | Variant groups |
|---|---|---|---|---|---|---|---|---|
| 1event_id | – | – | – | – | – | 300 | 300 | 0 |
| 2timestamp | – | – | – | 100.0%300 | – | 300 | 300 | 0 |
| 3type | – | – | – | – | – | 5 | 5 | 0 |
| 4user.id | – | – | – | – | – | 60 | 60 | – |
| 5user.country | – | – | – | 84.33%253 | – | 5 | 5 | 0 |
| 6user.plan | – | – | – | – | – | 3 | 3 | 0 |
| 7device.os | – | – | – | 100.0%300 | – | 5 | 5 | 0 |
| 8device.mobile | – | – | – | – | – | 2 | 2 | – |
| 9page | – | – | – | – | – | 8 | 8 | 0 |
| 10tags[] | – | – | – | – | – | 5 | 5 | 0 |
| 11amount | – | – | – | – | – | 21 | 21 | – |
| 12currency | – | – | – | 7.0%21 | – | 1 | 1 | 0 |
| 13error_code | – | – | – | – | – | 3 | 3 | – |
| 14experiment | – | – | – | 10.0%30 | – | 2 | 2 | 0 |
05 / Numeric
Numeric analysis(3)
Range and distribution statistics for accepted numeric values.
Column | Range | Minimum | Maximum | Mean | Median | Distinct | Examples |
|---|---|---|---|---|---|---|---|
| 4user.id | 59 | 1 | 60 | 31.7031 | 33 | 60 | 592534 Values 60 59(8) 25(7) 34(7) 6(7) 60(7) 43(6) 18(5) 28(5) 8(5) 9(5) 22(4) 32(4) 10(3) 13(3) 57(3) 11(2) 12(2) 4(2) 40(2) 46(2) |
| 11amount | 266.19 | 23.43 | 289.62 | 162.721 | 165.74 | 21 | 151.62160.1165.74 Values 21 151.62(1) 160.1(1) 165.74(1) 203.71(1) 216.5(1) 226.44(1) 23.43(1) 232.05(1) 239.9(1) 248.12(1) 262.23(1) 269.96(1) 273.29(1) 289.62(1) 30.23(1) 47.97(1) 51.35(1) 59.65(1) 79.2(1) 91.93(1) 94.1(1) |
| 13error_code | 99 | 404 | 503 | 467.4615 | 500 | 3 | 500404503 Values 3 500(11) 404(9) 503(6) |
06 / Dates
Date analysis(1)
Strict date parsing keeps ambiguous, invalid and non-date values separate. Ambiguous values are never resolved from the other values of the column.
Column | Status | Breakdown | Valid | Ambiguous | Invalid | Other | Distinct | Formats |
|---|---|---|---|---|---|---|---|---|
| 2timestamp | valid | 100.0%300 | – | – | – | 300 | 1 variant 1 variant YYYY-MM-DDTHH:MM:SSZ300 (100.0%) Invalid date0 (0.0%) Not a date0 (0.0%) |
07 / Text
String analysis(10)
Length classes, fixed widths and representative values.
Column | Class | Fixed | Min | Max | Mean | Median | Lengths | Distinct | Examples |
|---|---|---|---|---|---|---|---|---|---|
| 1event_id | short | 9 | – | – | – | – | 300 | evt-00001 Lengths 1 9 charactersevt-00001 / evt-00002 / evt-00003 100.0%300 | |
| 2timestamp | short | 20 | – | – | – | – | 300 | 2026-03-01T08:00:16Z Lengths 1 20 characters2026-03-01T08:00:16Z / 2026-03-01T08:00:17Z / 2026-03-01T08:01:03Z 100.0%300 | |
| 3type | short | – | 5 | 9 | 7.31 | 9.0 | 5 | page_viewclicksignup Lengths 4 9 characterspage_view 50.67%152 5 charactersclick / error 35.33%106 6 characterssignup 7.0%21 8 characterspurchase 7.0%21 | |
| 5user.country | very short | 2 | – | – | – | – | 5 | FR Lengths 1 2 charactersFR / US / DE 100.0%253 | |
| 6user.plan | very short | – | 3 | 4 | 3.63 | 4.0 | 3 | freepro Lengths 2 4 charactersfree / team 63.0%189 3 characterspro 37.0%111 | |
| 7device.os | short | – | 3 | 7 | 5.45 | 5.0 | 5 | WindowsmacOSiOS Lengths 3 7 charactersWindows / Android 42.33%127 5 charactersmacOS / Linux 37.67%113 3 charactersiOS 20.0%60 | |
| 9page | short | – | 1 | 13 | 6.66 | 6.0 | 8 | /docs/checkout/login Lengths 7 5 characters/docs / /blog 30.67%92 9 characters/checkout 16.33%49 6 characters/login 13.33%40 8 characters/pricing 12.0%36 1 character/ 10.33%31 13 characters/docs/install 9.67%29 7 characters/signup 7.67%23 | |
| 10tags[] | short | – | 4 | 10 | 6.85 | 6.0 | 5 | betanewsletterreturning Lengths 5 4 charactersbeta 21.11%95 10 charactersnewsletter 20.89%94 9 charactersreturning 20.67%93 5 characterspromo 18.67%84 6 charactersmobile 18.67%84 | |
| 12currency | very short | 3 | – | – | – | – | 1 | EUR Lengths 1 3 charactersEUR 100.0%21 | |
| 14experiment | very short | 1 | – | – | – | – | 2 | A Lengths 1 1 characterA / B 100.0%30 |
08 / Detectors
Detectors and formats(1)
What each detector recognized per column, with the formats it found. Primary: the interpretation shown as semantic type.
Column | Detector | Matched | Ambiguous | Invalid | Formats |
|---|---|---|---|---|---|
| 2timestamp | date primary | 100.0%300 | 0 | 0 | YYYY-MM-DDTHH:MM:SSZ 1 format YYYY-MM-DDTHH:MM:SSZ300 (100.0%) |
09 / Limits
Limits and diagnostics
What the scan could not measure completely, and the technical events it recorded. Counters and statistics continue past a limit.
Diagnostics(2)
- error
jsonl_invalid_lineLines that are not valid JSON were excluded.Records 121 (line 121), 251 (line 251)2 - error
jsonl_record_not_objectLines holding valid JSON that is not an object were excluded: a record is a JSON object.Records 201 (line 201)1
10 / Raw values
Data sample(20)
First 20 records with original row numbers and raw values.
Row | event_ | timestamptext | typetext | user. | user. | user. | device. | device. | pagetext | tags[]text | amountnumber | currencytext | error_ | experimenttext |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | evt-00001 | 2026-03-01T08:00:16Z | page_view | 33 | null | free | macOS | false | /login | newsletter, beta, promo | absent | absent | absent | absent |
| 2 | evt-00002 | 2026-03-01T08:00:17Z | purchase | null | DE | free | Android | true | /checkout | mobile, beta | 79.2 | EUR | absent | absent |
| 3 | evt-00003 | 2026-03-01T08:01:03Z | click | 33 | null | free | Linux | true | /blog | beta, mobile | absent | absent | absent | absent |
| 4 | evt-00004 | 2026-03-01T08:02:26Z | error | 20 | FR | team | Linux | true | /login | absent | absent | absent | 500 | absent |
| 5 | evt-00005 | 2026-03-01T08:03:41Z | click | 8 | US | team | iOS | false | /login | beta, newsletter | absent | absent | absent | absent |
| 6 | evt-00006 | 2026-03-01T08:04:47Z | click | 37 | CA | free | Windows | false | /pricing | beta, mobile, newsletter | absent | absent | absent | absent |
| 7 | evt-00007 | 2026-03-01T08:05:17Z | page_view | 30 | null | pro | iOS | true | /login | newsletter, beta | absent | absent | absent | absent |
| 8 | evt-00008 | 2026-03-01T08:06:09Z | click | 54 | DE | free | Windows | true | /checkout | returning, mobile, beta | absent | absent | absent | absent |
| 9 | evt-00009 | 2026-03-01T08:07:38Z | click | 50 | US | pro | iOS | false | / | returning, beta | absent | absent | absent | absent |
| 10 | evt-00010 | 2026-03-01T08:07:51Z | click | 51 | BE | pro | Android | false | /docs | beta, promo, returning | absent | absent | absent | absent |
| 11 | evt-00011 | 2026-03-01T08:08:26Z | click | 13 | null | pro | macOS | false | / | absent | absent | absent | absent | absent |
| 12 | evt-00012 | 2026-03-01T08:08:27Z | click | 60 | FR | team | macOS | true | / | returning, mobile | absent | absent | absent | absent |
| 13 | evt-00013 | 2026-03-01T08:08:28Z | page_view | 37 | US | team | macOS | false | /checkout | newsletter | absent | absent | absent | absent |
| 14 | evt-00014 | 2026-03-01T08:09:57Z | click | 27 | null | free | macOS | false | /blog | beta, mobile, returning | absent | absent | absent | absent |
| 15 | evt-00015 | 2026-03-01T08:10:23Z | click | null | FR | pro | Windows | true | /signup | promo, newsletter | absent | absent | absent | absent |
| 16 | evt-00016 | 2026-03-01T08:11:29Z | click | 20 | US | pro | Windows | false | /checkout | mobile | absent | absent | absent | absent |
| 17 | evt-00017 | 2026-03-01T08:12:45Z | click | 40 | DE | pro | iOS | true | /pricing | promo, mobile, returning | absent | absent | absent | absent |
| 18 | evt-00018 | 2026-03-01T08:13:08Z | page_view | 60 | FR | pro | macOS | false | / | newsletter | absent | absent | absent | absent |
| 19 | evt-00019 | 2026-03-01T08:13:36Z | click | 9 | CA | team | macOS | true | /login | promo, beta, mobile | absent | absent | absent | absent |
| 20 | evt-00020 | 2026-03-01T08:14:00Z | page_view | null | US | pro | Android | true | /docs | newsletter, beta | absent | absent | absent | absent |
11 / Method
Analysis settings
Rules used for this analysis, so the result can be reproduced.
- Scope
- All 300 records
- Missing values
- absent, null, empty, blank, marker; markers:
"N/A""NULL" - Marker comparison
- Whitespace trimmed; case-sensitive
- Value normalization
- Unicode composition (NFC): enabled; trim: enabled; collapse internal whitespace: enabled; comparison also with case folding: enabled, accents removed: enabled. Raw preview values are preserved.
- Duplicate comparison
- Exact raw values across every column; up to 2,000,000 distinct records compared
- Type inference
- At least 95.0% agreement across present values; numbers with dot or comma decimals, configured dates and true/false. Leading-zero identifiers remain text.
- Date detection
- Orders: YMD, MDY, DMY; separators:
"-""/""."; month names: en, fr; ambiguous order: unresolved, column evidence shown but never applied - Semantic types
- Dates, or the only detector matching at least 95.0% of present values
- Adaptive detection
- Every detector on the first 10,000 distinct values of each column; detectors that recognized none of them, or at most 0.1% of them and none of the last 5,000, then skip the others, except about 1 value in 100. Number and date detection always test every value
- Enumerations
- At most 49 distinct values among at least 500 present values
- Sensitive values
- Masked in examples and the data sample
- String lengths
- Very short through 5; short through 20; medium through 50; long through 255; otherwise very long. Up to 10 examples per length are retained when the maximum is 50 or less.
- Value representation
- Complete through 50 distinct values; otherwise a reproducible sample of 100 distinct values
- Row numbering
- Data records start at 1, excluding the header. Quoted multiline values count as one record.
- Preview selection
- First 20 records; raw values preserved
- JSON format
- 0.1.0a - revision 11 (experimental)
4c998078985c1758fdb5d5ff2e3e842dc4ad48469067cbab08b2ec4ddd86dea3