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 |
|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|