本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
SQL 引擎支持的数据类型
AWS Clean Rooms 支持多个 SQL 引擎和方言。了解这些实施中的数据类型系统对于成功进行数据协作和分析至关重要。下表显示了 SQL、Snowflak AWS Clean Rooms e SQL 和 Spark SQL 中的等效数据类型。
数值数据类型
数字类型表示各种数字,从精确的整数到近似的浮点值。数字类型的选择会影响存储要求和计算精度。整数类型因字节大小而异,而十进制和浮点类型则提供不同的精度和缩放选项。
| 数据类型 | AWS Clean Rooms SQL | 雪花 SQL | Spark SQL | 描述 |
|---|---|---|---|---|
| 8 字节整数 | BIGINT | 不支持 | BIGINT,长 | 从-9,223,372,036,036,854,775,808到9,223,372,036,854,775,807的带符号整数。 |
| 4 字节整数 | INT | 不支持 | INT,INTEGER | 从 -2,147,483,648 到 2,147,483,647 之间的带符号整数 |
| 2 字节整数 | SMALLINT | 不支持 | 小,短 | 从 -32,768 到 32,767 之间的带符号整数 |
| 1 字节整数 | 不支持 | 不支持 | TINYINT,BYTE | 从 -128 到 127 之间的有符号整数 |
| 双精度浮动 | 双精度、双精度 | 浮点型、 FLOAT4、 FLOAT8、双精度、双精度、实数 | DOUBLE | 8 字节双精度浮点数 |
| 单精度浮球 | 真实,浮动 | 不支持 | FLOAT | 4 字节单精度浮点数 |
| 十进制(固定精度) | DECIMAL | 十进制、数字、数字注意Snowflake 会自动将较小宽度的精确数字类型(INT、BIGINT、SMALLINT 等)别名为数字。 |
十进制、数字、 | 任意精度的带符号十进制数 |
| 十进制(精确) | 十进制 (p) | 十进制 (p)、数字 (p) | 十进制 (p) | 固定精度的十进制数字 |
| 十进制(带刻度) | DECIMAL (p,s) | 十进制 (p, s)、数字 (p, s) | DECIMAL (p,s) | 带刻度的固定精度十进制数字 |
布尔数据类型
布尔类型表示简单的 true/false 逻辑值。这些类型在 SQL 引擎中是一致的,通常用于标志、条件和逻辑操作。
| 数据类型 | AWS Clean Rooms SQL | 雪花 SQL | Spark SQL | 描述 |
|---|---|---|---|---|
| 布尔值 | BOOLEAN | BOOLEAN | BOOLEAN | 代表 true/false 值 |
日期和时间数据类型
日期和时间类型处理时态数据,其精度和时区感知程度各不相同。这些类型支持不同的格式来存储日期、时间和时间戳,并提供包含或排除时区信息的选项。
| 数据类型 | AWS Clean Rooms SQL | 雪花 SQL | Spark SQL | 描述 |
|---|---|---|---|---|
| 日期 | DATE | DATE | DATE | 不带时区的日期值(年、月、日) |
| Time | TIME | 不支持 | 不支持 | 一天中的时间,以 UTC 表示,不含时区 |
| 与 TZ 共度时光 | TIMETZ | 不支持 | 不支持 | 一天中的时间(UTC),含时区 |
| Timestamp | TIMESTAMP | 时间戳,TIMESTAMP_NTZ | TIMESTAMP_NTZ | Timestamp without time zone注意NTZ 表示 “无时区” |
| 带有 TZ 的时间戳 | TIMESTAMPTZ | TIMESTAMP_LTZ | 时间戳,TIMESTAMP_LTZ | 带有本地时区的时间戳注意LTZ 表示 “本地时区” |
字符数据类型
字符类型存储文本数据,提供固定长度和可变长度选项。这些类型处理文本字符串和二进制数据,并具有可选的长度规格来控制存储分配。
| 数据类型 | AWS Clean Rooms SQL | 雪花 SQL | Spark SQL | 描述 |
|---|---|---|---|---|
| 固定长度的字符 | CHAR | CHAR,CHARACTER | CHAR,CHARACTER | 固定长度字符串 |
| 带长度的固定长度字符 | CHAR(n) | CHAR(n),CHARACTER(n) | CHAR(n),CHARACTER(n) | 具有指定长度的固定长度字符串 |
| 长度可变的字符 | VARCHAR | VARCHAR、字符串、文本 | VARCHAR,字符串 | 长度可变的字符串 |
| 带长度的可变长度字符 | VARCHAR (n) | VARCHAR (n)、字符串 (n)、文本 (n) | VARCHAR (n) | 有长度限制的可变长度字符串 |
| 二元 | VARBYTE | BINARY、VARBINARY | BINARY | 二进制字节序列 |
| 带长度的二进制 | VARBYTE(n) | 不支持 | 不支持 | 有长度限制的二进制字节序列 |
结构化数据类型
结构化类型允许通过将多个值组合成单个字段来组织复杂的数据。其中包括用于有序集合的数组、键值对的映射以及用于使用命名字段创建自定义数据结构的结构。
| 数据类型 | AWS Clean Rooms SQL | 雪花 SQL | Spark SQL | 描述 |
|---|---|---|---|---|
| 数组 | 数组 <type> | 数组(类型) | 数组 <type> | 相同类型元素的有序序列注意数组类型必须包含相同类型的元素 |
| Map | 地图<key, value> | MAP(键、值) | 地图<key, value> | 键值对的集合注意地图类型必须包含相同类型的元素 |
| 结构体 | 结构< field1: type1, field2: type2> | 对象(字段 1 类型 1,字段 2 类型 2) | 结构< field1: type1, field2: type2 > | 包含指定类型的命名字段的结构注意不同实现的结构化类型语法可能略有不同 |
| 超级 | SUPER | 不支持 | 不支持 | 灵活的类型,支持所有数据类型,包括复杂类型 |