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:
| Type | Extension Name | Underlying Arrow Storage | Description |
|---|---|---|---|
| JSON | json | Binary | A valid JSON object. Used for unstructured or semi-structured data like tags, metadata, and API responses. |
| Inet | inet | Binary | An IP address or CIDR block (e.g. 192.168.1.0/24). Stored as binary-encoded net.IPNet values. |
| MAC | mac | Binary | A hardware MAC address (e.g. 01:23:45:67:89:ab). Stored as binary-encoded net.HardwareAddr values. |
| UUID | uuid | FixedSizeBinary(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
- Arrow String Representation - full mapping of Arrow types to string representations
- Integrations - how source and destination integrations define and consume typed data
- Schema Migrations - how CloudQuery handles type changes between syncs
- Creating a new integration - define tables and columns using Arrow types in your own integration
- Integration SDK documentation - SDK API reference including type definitions