Skip to Content
CLICore ConceptsCloudQuery Types

CloudQuery Types

When CloudQuery syncs data from a cloud provider, every column in every table has a defined type - timestamps, strings, IP addresses, JSON blobs, and so on. Understanding the type system matters when you’re writing SQL queries against synced data, building custom integrations, or troubleshooting why a column looks different in your destination than you expected.

CloudQuery uses Apache Arrow to represent data internally. Source integrations define columns in terms of Arrow types, and destinations convert from Arrow to their own native types (e.g. Arrow Timestamp becomes TIMESTAMP in PostgreSQL or DateTime in ClickHouse).

Apart from the native Arrow types (strings, integers, floats, booleans, timestamps, lists, structs, etc.), CloudQuery defines four custom types as Arrow extensions:

TypeExtension NameUnderlying Arrow StorageDescription
JSONjsonBinaryA valid JSON object. Used for unstructured or semi-structured data like tags, metadata, and API responses.
InetinetBinaryAn IP address or CIDR block (e.g. 192.168.1.0/24). Stored as binary-encoded net.IPNet values.
MACmacBinaryA hardware MAC address (e.g. 01:23:45:67:89:ab). Stored as binary-encoded net.HardwareAddr values.
UUIDuuidFixedSizeBinary(16)A 16-byte UUID (e.g. 123e4567-e89b-12d3-a456-426614174000). The only extension type that uses fixed-size storage.

These extension types carry semantic meaning that destinations can use for more accurate type mapping. For example, a destination can map UUID to a native UUID column type rather than treating it as raw binary.

String Representation

When Arrow types need to be represented as strings (for CSV output, debugging, or destinations that lack native type support), CloudQuery uses specific formatting conventions. For the full mapping of all Arrow types to their string representations, see Arrow String Representation.

Next Steps

Last updated on