本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
SQL 引擎的資料類型支援
AWS Clean Rooms 支援多個 SQL 引擎和方言。了解這些實作的資料類型系統對於成功的資料協作和分析至關重要。下表顯示 AWS Clean Rooms SQL、Snowflake SQL 和 Spark SQL 之間的同等資料類型。
數值資料類型
數值類型代表各種類型的數字,從精確整數到近似浮點值。數值類型的選擇會影響儲存需求和運算精確度。整數類型因位元組大小而異,而小數和浮點類型提供不同的精確度和縮放選項。
| 資料類型 | AWS Clean Rooms SQL | Snowflake SQL | Spark SQL | 說明 |
|---|---|---|---|---|
| 8 位元組整數 | BIGINT | 不支援 | BIGINT、LONG | 從 -9,223,372,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 | 不支援 | SMALLINT,簡短 | 從 -32,768 到 32,767 的帶正負號整數 |
| 1 位元組整數 | 不支援 | 不支援 | TINYINT、BYTE | 從 -128 到 127 的帶正負號整數 |
| 雙精確度浮點數 | 雙精度、雙精度 | FLOAT, FLOAT4, FLOAT8, DOUBLE, DOUBLE PRECISION, REAL | DOUBLE | 8 位元組雙精度浮點數 |
| 單一精確度浮點數 | REAL、FLOAT | 不支援 | FLOAT | 4 位元組單精度浮點數 |
| 小數 (固定精確度) | DECIMAL | DECIMAL、NUMERIC、NUMBER注意Snowflake 會自動將較小寬度的確切數值類型 (INT、BIGINT、SMALLINT 等) 別名為 NUMBER。 |
DECIMAL、NUMERIC、 | 任意精確度帶正負號的小數位數 |
| 小數 (含精確度) | DECIMAL(p) | DECIMAL(p)、NUMBER(p) | DECIMAL(p) | 固定精確度小數位數 |
| 小數 (使用擴展) | DECIMAL(p,s) | DECIMAL(p,s)、NUMBER(p,s) | DECIMAL(p,s) | 具有擴展的固定精確度小數位數 |
布林值資料類型
布林值類型代表簡單的 true/false 邏輯值。這些類型在 SQL 引擎之間是一致的,通常用於旗標、條件和邏輯操作。
| 資料類型 | AWS Clean Rooms SQL | Snowflake SQL | Spark SQL | 說明 |
|---|---|---|---|---|
| Boolean | BOOLEAN | BOOLEAN | BOOLEAN | 代表 true/false 值 |
日期和時間資料類型
日期和時間類型處理時間資料,精確度和時區感知程度各不相同。這些類型支援儲存日期、時間和時間戳記的不同格式,包括或排除時區資訊的選項。
| 資料類型 | AWS Clean Rooms SQL | Snowflake SQL | Spark SQL | 說明 |
|---|---|---|---|---|
| 日期 | DATE | DATE | DATE | 不含時區的日期值 (年、月、日) |
| 時間 | TIME | 不支援 | 不支援 | UTC 中的當日時間,不含時區 |
| 使用 TZ 的時間 | TIMETZ | 不支援 | 不支援 | UTC 中的當日時間,含時區 |
| 時間戳記 | TIMESTAMP | TIMESTAMP、TIMESTAMP_NTZ | TIMESTAMP_NTZ | 不含時區的時間戳記注意NTZ 表示「無時區」 |
| 使用 TZ 的時間戳記 | TIMESTAMPTZ | TIMESTAMP_LTZ | TIMESTAMP、TIMESTAMP_LTZ | 具有本機時區的時間戳記注意LTZ 表示「當地時區」 |
字元資料類型
字元類型可存放文字資料,同時提供固定長度和可變長度選項。這些類型會處理文字字串和二進位資料,並搭配選用的長度規格來控制儲存配置。
| 資料類型 | AWS Clean Rooms SQL | Snowflake SQL | Spark SQL | 說明 |
|---|---|---|---|---|
| 固定長度字元 | CHAR | CHAR、CHARACTER | CHAR、CHARACTER | 固定長度的字元字串 |
| 長度為 的固定長度字元 | CHAR(n) | CHAR(n), CHARACTER(n) | CHAR(n), CHARACTER(n) | 指定長度的固定長度字元字串 |
| 可變長度字元 | VARCHAR | VARCHAR、STRING、TEXT | VARCHAR、STRING | 可變長度字元字串 |
| 可變長度字元與長度 | VARCHAR(n) | VARCHAR(n)、STRING(n)、TEXT(n) | VARCHAR(n) | 具有長度限制的可變長度字元字串 |
| 二進位 | VARBYTE | BINARY、VARBINARY | BINARY | 二進位位元組序列 |
| 具有長度的二進位 | VARBYTE(n) | 不支援 | 不支援 | 具有長度限制的二進位位元組序列 |
結構化資料類型
結構化類型可將多個值合併為單一欄位,以允許複雜的資料組織。這些包括排序集合的陣列、索引鍵/值對的映射,以及使用具名欄位建立自訂資料結構的結構。
| 資料類型 | AWS Clean Rooms SQL | Snowflake SQL | Spark SQL | 說明 |
|---|---|---|---|---|
| 陣列 | ARRAY<type> | ARRAY(類型) | ARRAY<type> | 相同類型的元素順序注意陣列類型必須包含相同類型的元素 |
| Map | MAP<key,value> | MAP(索引鍵、值) | MAP<key,value> | 鍵值對的集合注意映射類型必須包含相同類型的元素 |
| Struct | STRUCT< field1: type1, field2: type2> | OBJECT( field1 type1, field2 type2 ) | STRUCT< field1: type1, field2: type2 > | 具有指定類型之具名欄位的結構注意結構式類型語法在實作之間可能略有不同 |
| 超級 | SUPER | 不支援 | 不支援 | 彈性類型支援所有資料類型,包括複雜類型 |