Microsoft Fabric 中的数据类型
适用于:✅SQL 分析终结点和 Microsoft Fabric 中的仓库
Microsoft Fabric 中的表支持最常用的 T-SQL 数据类型。
- 有关表创建的详细信息,请参阅表。
- 仓库支持的数据类型不同于 Fabric 中支持的 SQL 数据库的数据类型。
- 有关语法,请参阅 CREATE TABLE
Warehouse 中的数据类型
仓库支持 T-SQL 数据类型的子集。 提供的每个数据类型都基于同名的 SQL Server 数据类型。 有关详细信息,请参阅下表中对于每种类型的参考文章。
类别 | 支持的数据类型 |
---|---|
精确数字 | |
近似数字 | |
日期和时间 | |
固定长度字符串 | |
可变长度字符串 |
|
二进制字符串 |
* datetime2 和 time 的精度限制为以秒为单位的 6 位小数。
** uniqueidentifier 数据类型是 T-SQL 数据类型,在增量 Parquet 中没有匹配的数据类型。 因此,它会被存储为二进制类型。 仓库支持存储和读取 uniqueidentifier 列,但无法在 SQL 分析终结点上读取这些值。 读取湖屋中的 uniqueidentifier 值时,会显示原始值的二进制表示形式。 因此,使用 uniqueidentifier 列的仓库和 SQL 分析终结点之间的交叉联接等功能无法按预期运行。
*** 对 varchar(max) 和 varbinary(max) 的支持目前处于预览阶段。
有关支持的数据类型(包括其精度)的详细信息,请参阅 CREATE TABLE 参考中的数据类型。
不支持的数据类型
对于当前不支持的 T-SQL 数据类型,可以使用一些替代方法。 请确保评估这些类型的使用情况,因为精度和查询行为有所不同:
不支持的数据类型 | 可用的替代项 |
---|---|
money 和 smallmoney | 使用十进制,但请注意,它不能存储货币单位。 |
datetime 和 smalldatetime | 使用 datetime2。 |
datetimeoffset | 使用 datetime2,但是可以使用 datetimeoffset 通过 CAST AT TIME ZONE (Transact-SQL) 函数转换数据。 有关示例,请参阅 datetimeoffset。 |
nchar 和 nvarchar | 分别使用 char 和 varchar,因为 Parquet 中没有类似的 unicode 数据类型。 UTF-8 排序规则中的 char 和 varchar 类型可能会使用比 nchar 和 nvarchar 更多的存储空间来存储 unicode 数据。 若要了解对环境的影响,请参阅 UTF-8 和 UTF-16 之间的存储差异。 |
text 和 ntext | 使用 varchar。 |
图像 | 使用 varbinary。 |
tinyint | 请使用 smallint。 |
地理 | 无等效项。 |
不受支持的数据类型仍然可以在 T-SQL 代码中用于变量,或在会话中用于任何内存中。 不允许使用任何这些类型创建在磁盘上持久保存数据的表或视图。
有关在 Warehouse 中创建表的指南,请参阅创建表。
SQL 分析中自动生成的数据类型
每当在关联的 Lakehouse 中创建表时,系统都会自动创建 SQL 分析终结点中的表。 SQL 分析终结点表中的列类型派生自源 Delta 类型。
下表显示了将原始 Delta 类型映射到 SQL 分析终结点中的 SQL 类型的规则:
Delta 数据类型 | SQL 数据类型(已映射) |
---|---|
LONG、BIGINT | bigint |
BOOLEAN、BOOL | bit |
INT、INTEGER | int |
TINYINT、BYTE、SMALLINT、SHORT | smallint |
DOUBLE | float |
FLOAT、REAL | real |
DATE | date |
TIMESTAMP | datetime2 |
CHAR(n) | varchar (n) 和 Latin1_General_100_BIN2_UTF8 排序规则。 |
STRING、VARCHAR(n) | varchar (n) 和 Latin1_General_100_BIN2_UTF8 排序规则。 |
STRING、VARCHAR(MAX) | varchar(MAX),使用 Latin1_General_100_BIN2_UTF8 排序规则 |
二进制 | varbinary(n) |
DECIMAL、DEC、NUMERIC | decimal(p,s) |
对于具有表格中未列出的类型的列,系统不会将其表示为 SQL 分析终结点中的表格列。