Data Types¶
DataFusion uses Arrow, and thus the Arrow type system, for query
execution. The SQL types from
sqlparser-rs
are mapped to Arrow data types according to the following table.
This mapping occurs when defining the schema in a CREATE EXTERNAL TABLE
command or when performing a SQL CAST
operation.
You can see the corresponding Arrow type for any SQL expression using
the arrow_typeof
function. For example:
select arrow_typeof(interval '1 month');
+---------------------------------------------------------------------+
| arrow_typeof(IntervalMonthDayNano("79228162514264337593543950336")) |
+---------------------------------------------------------------------+
| Interval(MonthDayNano) |
+---------------------------------------------------------------------+
You can cast a SQL expression to a specific Arrow type using the arrow_cast
function
For example, to cast the output of now()
to a Timestamp
with second precision:
select arrow_cast(now(), 'Timestamp(Second, None)');
+---------------------+
| now() |
+---------------------+
| 2023-03-03T17:19:21 |
+---------------------+
Character Types¶
SQL DataType |
Arrow DataType |
---|---|
|
|
|
|
|
|
|
|
Numeric Types¶
SQL DataType |
Arrow DataType |
Notes |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Decimal support is currently experimental (#3523) |
Date/Time Types¶
SQL DataType |
Arrow DataType |
---|---|
|
|
|
|
|
|
|
|
Boolean Types¶
SQL DataType |
Arrow DataType |
---|---|
|
|
Binary Types¶
SQL DataType |
Arrow DataType |
---|---|
|
|
You can create binary literals using a hex string literal such as
X'1234'
to create a Binary
value of two bytes, 0x12
and 0x34
.
Unsupported SQL Types¶
SQL Data Type |
Arrow DataType |
---|---|
|
Not yet supported |
|
Not yet supported |
|
Not yet supported |
|
Not yet supported |
|
Not yet supported |
|
Not yet supported |
|
Not yet supported |
|
Not yet supported |
|
Not yet supported |
|
Not yet supported |
|
Not yet supported |
|
Not yet supported |
Supported Arrow Types¶
The following types are supported by the arrow_typeof
function:
Arrow Type |
---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|