Basin Pipelines 支持一组用于 SQL 转换的基本数据类型和复合数据类型。这些类型可用于 stream 模式和 SQL 字面量,并支持自动类型推断。
| Pipelines | SQL 类型 | 示例字面量 |
|---|---|---|
bool |
BOOLEAN |
TRUE, FALSE |
int32 |
INT, INTEGER |
0, 1, -2 |
int64 |
BIGINT |
0, 1, -2 |
float32 |
FLOAT, REAL |
0.0, -2.4, 1E-3 |
float64 |
DOUBLE |
0.0, -2.4, 1E-35 |
string |
VARCHAR, CHAR, TEXT, STRING |
"hello", "world" |
timestamp |
TIMESTAMP |
'2020-01-01', '2023-05-17T22:16:00.648662+00:00' |
binary |
BYTEA |
X'A123'(十六进制) |
json |
JSON |
'{"event": "purchase", "amount": 29.99}' |
除基本数据类型外,Basin Pipelines SQL 还支持用于更复杂数据结构的复合类型。
列表将零个或多个相同类型的元素组合在一起。在 stream schema 中,列表使用 list 类型声明,并通过 items 字段指定元素类型。在 SQL 中,列表对应数组,通过在另一类型后添加 [] 声明,例如 INT[]。
列表值可使用从 1 开始的下标表示法(v[1] 是 v 的第一个元素)进行索引。
列表可通过 [] 字面量构造:
SELECT [1, 2, 3] as numbersBasin Pipelines 提供数组函数来处理列表值,也可以使用 UNNEST 运算符将列表展开。
结构体将相关字段组合为单个值。在 stream schema 中,结构体使用 struct 类型和 fields 数组声明。在 SQL 中,结构体可使用 struct 函数创建。
在 SQL 中创建结构体的示例:
SELECT struct('user123', 'purchase', 29.99) as event_data FROM events这将创建一个包含字段 c0、c1、c2 的结构体,分别存储用户 ID、事件类型和金额。
结构体字段可通过 . 表示法访问,例如 event_data.c0 表示用户 ID。