Articles in this section

How data types are inferred

Celigo sync uses metadata from the source application, destination application requirements, and the values returned during sync configuration to determine the data type for each destination field.

When a source application provides reliable metadata, Celigo sync analyzes it to define the field’s data type. When source metadata is incomplete, unavailable, or too broad for the destination schema, Celigo sync applies built-in schema inference to assign the closest supported Celigo data type. The inferred data type is then mapped to a compatible data type in the destination data warehouse.

How data types are selected

Celigo sync determines a field’s data type in the following general priority:

  1. Source-provided metadata: If the source application exposes field metadata in objects, Celigo sync uses it to identify the field’s expected structure. For example, a source field identified as a date, number, Boolean, object, or array can be mapped directly to the corresponding Celigo data type.

  2. Configured export or object details: If you selected a source object, saved search, or Celigo export, the sync uses the available field definitions from that selection. These definitions help Celigo determine how the field should be represented in the destination schema.

  3. Values returned from the source: Intelligent inference is commonly needed for HTTP-based exports, universal applications, and other sources where strict field metadata might not be available.

    • At design time, Celigo sync evaluates the values returned by the source in a preview request.

    • During the sync run, it automatically adjusts the schema based on the live data extracted.

  4. Default handling for ambiguous fields: If Celigo sync cannot confidently infer a more specific type, the field is treated as a general string-compatible value so that the data can still be loaded.

Important

A field’s inferred data type depends on the source metadata and the values available to the sync. If a later sync returns values that no longer fit the original type, Celigo sync treats the change as schema drift and applies the schema drift policy configured for the sync, object, export, or field.

Empty and null values

Empty values, blank strings, and null values do not always provide enough information to identify a specific data type.

If a field contains only empty or null values when Celigo sync evaluates the source schema, Celigo sync may assign a default type so that the field can be added to the destination schema. When later sync runs return populated values, Celigo sync can detect the difference and apply the most specific schema drift policy.

Mixed data types

Some source applications allow the same field to contain different kinds of values across records. For example, a field might contain a number in one record and text in another.

When Celigo sync detects mixed values, it selects a destination-compatible type that can preserve the data without causing load errors. In many cases, a string-compatible type is the safest option because it can store numeric, Boolean, and text values without changing the field again.

Celigo data types explained

Data Type

Short Description

Example

ARRAY

An ordered collection of values stored as a single field. Elements are typically of the same or compatible types.

["red", "green", "blue"]

BINARY

Raw byte data used for storing non-text content such as files, images, or encoded values.

0x4A6F686E

BOOLEAN

Represents a logical value with two possible states: true or false.

TRUE

DATE

Stores a calendar date without any time-of-day information.

2026-06-22

DATETIMELTZ

Date and time value interpreted using the session’s local time zone while stored in a normalized format.

2026-06-22 14:30:00

DATETIMENTZ

Date and time value stored without any associated time zone information.

2026-06-22 14:30:00

DATETIMETZ

Date and time value that includes an explicit time zone or UTC offset.

2026-06-22 14:30:00 -05:00

DECIMAL

Fixed-precision numeric type designed for exact arithmetic, often used for financial values.

12345.67

DEFAULT

A generic or inferred data type used when a more specific type is not explicitly assigned.

"Sample Value"

DOUBLE

Floating-point number with double precision, suitable for a wide range of scientific or statistical calculations.

3.141592653589793

NUMBER

General-purpose numeric type that can represent whole numbers and fractional values.

98765.4321

INTEGER

Numeric type for whole numbers without decimal places.

42

LONG

Integer type optimized for storing larger whole-number values than a standard integer.

9223372036854775807

OBJECT

Structured data type containing named attributes or key-value pairs.

{"name":"Alice","age":30}

SHORT

Integer type intended for smaller whole-number ranges, typically using less storage than an integer.

32767

STRING

Sequence of characters used to store text values.

"Hello, World!"

TIME

Stores a time of day without an associated date or time zone.

14:30:00

VARIANT

Flexible type capable of holding values of different underlying data types, including semi-structured data.

{"orderId":123,"items":["A","B"]}