我正在尝试在 Microsoft Fabric 的跟踪许可证下的数据工厂服务中创建一个管道。
此文件应该将我的 azure blob 容器中的 *.txt.gz 格式的文件中的数据复制到 MS Fabric 中的数据仓库中。
但是,在映射源列和目标列时,我收到其中一列的警告,如下所示 -
当我继续执行管道时,它失败并给出以下错误。将列类型从 float 更新为 varchar(8000) 并将 Datatime2 更新为 varchar(8000) 后,它工作正常并且摄取成功。
“ErrorCode = UserErrorSqlDWCopyCommandError,'类型= Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,消息= SQL DW 复制命令操作失败,错误为“Column 'PACKAGE_SIZE'” 类型“FLOAT”与外部数据类型“Parquet”不兼容 物理类型:BYTE_ARRAY,逻辑类型:UTF8',请尝试使用 ‘VARCHAR(8000)’。”
我不明白 Fabric 中是否支持这两种数据类型(根据此链接)
https://learn.microsoft.com/en-us/fabric/data-warehouse/data-types
那么为什么我的管道失败了,我是否缺少任何配置或错误解释了错误消息?
您遇到的错误表明 Parquet 文件中的数据与 SQL 数据仓库中的目标列之间存在类型不匹配。具体来说,Parquet 文件将数据存储为具有
BYTE_ARRAY
逻辑类型的 UTF8
,对应于 SQL 中的字符串类型,但目标列 PACKAGE_SIZE
定义为 FLOAT
。因此,根据 BYTE_ARRAY
与 UTF8
逻辑类型的错误兼容数据类型为 VARCHAR(8000)
.
这可能是将色谱柱类型从
float
更改为 varchar(8000)
以及 Datatime2
更改为 varchar(8000)
时获得管道成功的原因。 更多信息可以参考这个。