Fabric 数据仓库中的数据类型

适用于:✅SQL 分析端点和 Microsoft Fabric 中的仓库

Microsoft Fabric 中的表支持持久存储的 T-SQL 数据类型子集。 本文介绍创建在仓库中存储数据的表时支持的数据类型。 它不描述可用于 T-SQL 查询、变量、参数或表达式的所有数据类型。

Fabric 数据仓库中的数据类型

仓库支持 T-SQL 数据类型的子集。 提供的每个数据类型都基于同名的 SQL Server 数据类型。 有关详细信息,请参阅下表中对于每种类型的参考文章。

注释

以下受支持和不支持的数据类型适用于 Fabric 数据仓库中的表和其他持久化对象。 某些不受支持的类型仍可用于查询、变量、参数和存储过程逻辑。

类别 支持的数据类型
精确数字
近似数字
日期和时间
固定长度字符串
可变长度字符串
  • varchar - varchar(max) 中的存储限制目前为 Fabric 数据仓库中的 16 MB。
二进制数据

* datetime2time 的精度限制为以秒为单位的 6 位小数。

** uniqueidentifier 数据类型是 T-SQL 数据类型,在 Delta Parquet 中没有匹配的数据类型。 因此,它会被存储为二进制类型。 仓库支持存储和读取 uniqueidentifier 列,但无法在 SQL 分析终结点上读取这些值。 读取湖屋中的 uniqueidentifier 值时,会显示原始值的二进制表示形式。 因此,使用 uniqueidentifier 列在仓库和 SQL 分析端点之间进行交叉连接等功能无法按预期运行。

有关支持的数据类型(包括其精度)的详细信息,请参阅 CREATE TABLE 参考中的数据类型

表格不支持的数据类型

对于当前不支持的 T-SQL 数据类型,可以使用一些替代方法。 请确保评估这些类型的使用情况,因为精度和查询行为有所不同:

不支持的数据类型 可用的替代项
小钱 使用十进制,但请注意,它不能存储货币单位。
datetimesmalldatetime 使用datetime2
datetimeoffset 使用 datetime2,但是可以使用 datetimeoffset 通过 CASTAT TIME ZONE (Transact-SQL) 函数转换数据。 有关示例,请参阅 datetimeoffset
ncharnvarchar 分别使用 char 和 varchar,因为 Parquet 中没有类似的 unicode 数据类型。 UTF-8 排序规则中的 char 和 varchar 类型可能会使用比 nchar 和 nvarchar 更多的存储空间来存储 unicode 数据。 若要了解对环境的影响,请参阅 UTF-8 和 UTF-16 之间的存储差异
text 和 ntext 使用varchar
图像 使用 varbinary
tinyint 请使用smallint
地理 以(纬度、经度)列对或含常见二进制内容的 varbinary 列的形式存储地理数据,并将其强制转换为地理值。 或者,使用 varchar 类型,并将数据存储为已知文本。
几何学 将几何数据存储为(纬度,经度)列对或具有已知二进制内容的 varbinary 列,并将其转换为几何值。作为另一种选择,可使用 varchar 类型,并以已知文本格式存储数据。
json 使用varchar
xml 无等效项。
用户定义的类型 (CLR) 无等效项。
向量 没有对应项,请考虑Fabric Data Warehouse(预览版)中的 AI 函数

不支持的数据类型仍可用于 T-SQL 代码中的变量、函数和存储过程的参数或输出,或会话中的任何内存使用。 不允许使用任何这些类型创建在磁盘上持久保存数据的表或视图。

有关在 Warehouse 中创建表的指南,请参阅创建表

SQL 分析端点中自动生成的数据类型

每当在关联的 Lakehouse 中创建表时,系统都会自动创建 SQL 分析终结点中的表。 SQL 分析终结点表中的列类型派生自源 Delta 类型。

表中未列出的类型不表示为 SQL 分析终结点中的表列。

与仓库表一样,只有持久存储支持的数据类型才会具体化为 SQL 分析终结点中的列。 下表显示了将原始 Delta 类型映射到 SQL 分析终结点中的 SQL 类型的规则:

Delta 数据类型 SQL 数据类型(已映射)
LONGBIGINT bigint
BOOLEANBOOL 比特
INTINTEGER int
TINYINTBYTESMALLINTSHORT smallint
加倍 浮点
FLOATREAL 真正
DATE 日期
时间戳 datetime2
CHAR(n) varchar(n) 与 Latin1_General_100_BIN2_UTF8 排序规则
VARCHAR(n) 其中 n < 2000 varchar(4*n)使用Latin1_General_100_BIN2_UTF8 排序规则
STRING, VARCHAR(n)其中 n >= 2000 在 Lakehouse 的 SQL 分析终结点中,字符类型为 varchar(8000);对于镜像项,在 SQL 分析终结点中,则为 varchar(max)* 。
varchar 列具有Latin1_General_100_BIN2_UTF8排序规则。
二进制 varbinary(n)
DECIMALDECNUMERIC decimal(p,s)

* varchar(max) 中的存储限制目前为 SQL 分析终结点和 Fabric 数据仓库中的 16 MB。