VVintage Modeling

How your data is parsed

Each field is stored as a type, and that type decides how its values are read. This page explains how numeric, date, categorical, and text values are parsed.

One consistent rule for every column

A value is read the same way no matter which field it maps to. The rules below decide whether a cell is a number and, if so, what number it becomes. A field stays numeric as long as most of its values are numbers; the occasional value that is not a number (such as "Pending") is kept but treated as empty.

Blank is empty, never zero

An empty cell and common placeholders for missing data (NA, N/A, none, a single dash) are treated as "no value". They are never read as 0, so they do not pull an average or a total down.

Plain numbers, signs, and decimals

Whole numbers and decimals are read as written, with an optional leading + or - sign. A leading or trailing space is ignored.

Thousands separators

Commas are removed only when they group digits correctly in threes, so 1,234.56 reads as 1234.56 and 1,234,567 reads as 1234567. The decimal point is always a period. A value whose commas do not group correctly (1,5 or 12,34 or 1,2345 or a zero-led 0,125) is never silently reinterpreted as a different number: it is kept as text. Numbers written in the European style, with a period for thousands and a comma for the decimal (1.234,56), are also kept as text and should be reformatted before upload.

Currency symbols and codes

A leading currency symbol ($, and the euro, pound, or yen symbols) and a leading or trailing 3-letter currency code (USD, EUR, GBP, JPY, CAD, AUD, CHF, CNY) are removed, so $1,234.56 and 1234.56 USD both read as 1234.56. The sign and the symbol can appear in either order: -$1,234.56 and $-1,234.56 both read as -1234.56. A currency marker by itself with no number stays text.

Parentheses mean negative

Accounting-style parentheses mark a negative amount, so (500) reads as -500 and ($1,200) reads as -1200. The currency symbol can sit inside or outside the parentheses: $(1,234.00) and ($1,234.00) both read as -1234.

A percent sign is removed, not rescaled

A trailing percent sign is removed and the number is read as written, so 5% reads as 5 and 8.36% reads as 8.36. The value is never divided by 100 at this stage. Whether a percent column means a fraction or percentage points is decided by the field type you choose, and that scaling is applied later when the value is used, so a column that mixes 5% and 8.36 stays consistent.

What is kept as text

Values that are not plain numbers are kept as text and are not available for numeric ranges. This includes abbreviated magnitudes (125k, 1.2M), scientific notation (1e3), values with letters or units other than a recognized currency (10 bps, 3 months), and anything with extra punctuation (1.2.3).

Precision

Numbers are stored with up to six decimal places. Values needing more precision than that are rounded.

Very large numbers

Reading a number never changes it, whatever its size. Stored measurements hold up to 14 digits before the decimal point (well past one hundred trillion); a numeric field value beyond that is kept in your raw data but recorded as unmeasurable rather than stored inaccurately, and it is counted so you can see it happened. This is a storage limit, not a parsing rule. Long identifiers such as account or reference numbers are unaffected: they are kept as text.

Worked examples

Each row shows a value as it might appear in your file and the number it becomes. Values that are not recognized as numbers are kept as text.

InputResultNote
12341234

A plain whole number.

1,234.561234.56

Thousands commas are removed.

1,234,5671234567

Correctly grouped thousands commas are removed.

1,5Kept as text

Commas that do not group digits in threes are kept as text, never read as 15.

12,34Kept as text

Malformed grouping is kept as text, never read as 1234.

1,2345Kept as text

A four-digit group is not a thousands group; kept as text.

0,125Kept as text

A zero before the comma is not US thousands grouping (it usually means a European decimal); kept as text, never read as 125.

1.234,56Kept as text

European-style decimals are kept as text, never read as 1.23456.

$1,234.561234.56

A leading currency symbol is removed.

1234.56 USD1234.56

A trailing currency code is removed.

USD 100100

A leading currency code is removed.

-3.5-3.5

A leading minus sign is kept.

+77

A leading plus sign is allowed.

.50.5

A leading decimal point is allowed.

(500)-500

Parentheses mean negative.

($1,200)-1200

Parentheses plus a currency symbol.

$(1,234.00)-1234

The currency symbol outside the parentheses.

$ (1,234.00)-1234

A space between the symbol and the parentheses is fine.

5%5

A percent sign is removed, the number is kept as written.

(5%)-5

A negative percent, sign from the parentheses.

$-5-5

The currency symbol is removed, the sign kept.

-$1,234.56-1234.56

The sign before the currency symbol also works.

Kept as text

Blank is empty, not a number.

NAKept as text

A missing-data placeholder is empty.

-Kept as text

A single dash is treated as missing.

$ -Kept as text

An accounting-style zero (a dash after the symbol) is treated as missing, never 0.

PendingKept as text

Text is kept as text.

125kKept as text

Abbreviated magnitudes are kept as text.

$1.2MKept as text

Abbreviated magnitudes are kept as text.

10 bpsKept as text

Unrecognized units are kept as text.

5.Kept as text

A trailing decimal point with no digits is not a number.

USDKept as text

A currency code with no number stays text.

1e3Kept as text

Scientific notation is not supported.

1.2.3Kept as text

Extra punctuation is not a number.

How dates are read

Date fields work the same way as numbers: one consistent rule, applied the same everywhere. Formats that can only mean one thing are always accepted; a date written as two numbers is read using the Day/Month order declared for that column — suggested from your data when it can be proven, otherwise the US Month/Day order, shown with the column so you can correct it.

One consistent rule for every date column

A date value is read the same way no matter which field it maps to. Formats that can only mean one thing are always accepted; a date written as two numbers, where the day and month could be swapped, is read using the order declared for that column (suggested from your data, US Month/Day when the data cannot settle it). A value that does not fit is kept as text and treated as empty for date fields, never guessed.

Formats that are always recognized

Year-first dates (2024-01-15, 2024/1/15, 20240115), month codes (2024-01, 202401), and dates with a written month name (Jan-2024, January 2024, 15-Jan-2024, Jan 15, 2024) are always read, whatever the column's declared order. Month names can be the 3-letter abbreviation or the full name, in any capitalization. A month-level value (Jan-2024 or 2024-01) is read as the month, with the day pinned to the first.

Day/Month order is declared per column

A date written as two numbers and a year (04/07/2025 or 01-15-2024) could be Month/Day or Day/Month. Each column carries a declared order. Your own data settles it when it can: a value whose first number is over 12 proves Day/Month, and a value whose second number is over 12 proves Month/Day. When nothing in the column settles it, the column is read in the US Month/Day order; that assumption is shown with the column so you can correct it before your data is used. A value that does not fit the column's order is kept as text, never silently flipped.

Only real calendar dates

A value must be a date that actually exists. February 30th, April 31st, and February 29th in a non-leap year are kept as text, not rounded to a nearby date. February 29th in a leap year (02/29/2024) is a valid date.

What is kept as text

Values that do not fit any recognized date format, or that do not fit the column's declared order, are kept as text and treated as empty for date fields. A bare 4-digit year (2024) is not read as a date, because it cannot be told apart from an ordinary number.

Worked date examples

Each row shows a value as it might appear in your file, the declared order it is read under, and the date it becomes. Values that are not recognized as dates are kept as text.

InputDeclared orderResultNote
2024-01-15

Year first

2024-01-15

A year-first date is always recognized.

20240115

Year first

2024-01-15

An 8-digit date code.

2024-01

Year first

2024-01

A month code is read as the month, day pinned to the first.

04/07/2025

Month/Day

2025-04-07

Under Month/Day order this is April 7th, 2025.

04/07/2025

Day/Month

2025-07-04

The same value under Day/Month order is July 4th, 2025.

01-15-2024

Month/Day

2024-01-15

Dashes work the same as slashes for a declared order.

31/12/2024

Month/Day

Kept as text

A value that does not fit the declared order is kept as text, not silently flipped.

Jan-2024

Month name

2024-01

A written month name is always unambiguous.

January 2024

Month name

2024-01

Full month names work too, in any capitalization.

15-Jan-2024

Month name

2024-01-15

A day with a written month name.

Jan 15, 2024

Month name

2024-01-15

The written-out style is recognized.

15-Jan-2024

Month/Day

2024-01-15

Month-name dates are read under any declared order.

02/29/2024

Month/Day

2024-02-29

2024 is a leap year, so February 29th is a real date.

02/29/2023

Month/Day

Kept as text

2023 is not a leap year; kept as text.

02/30/2024

Month/Day

Kept as text

February 30th does not exist; kept as text.

04/31/2023

Month/Day

Kept as text

April has 30 days; kept as text.

04/07/2025

Year first

Kept as text

A two-number date does not fit a column declared year-first; kept as text.

2024

Month/Day

Kept as text

A bare year is never read as a date.