从列获取复制可能会在映射期间出现数据截断警告,并在 MS Fabric 下的数据工厂中出现 Float 不兼容错误?

问题描述 投票:0回答:1

我正在尝试在 Microsoft Fabric 的跟踪许可证下的数据工厂服务中创建一个管道。

此文件应该将我的 azure blob 容器中的 *.txt.gz 格式的文件中的数据复制到 MS Fabric 中的数据仓库中。

但是,在映射源列和目标列时,我收到其中一列的警告,如下所示 -

enter image description here

当我继续执行管道时,它失败并给出以下错误。将列类型从 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)’。”

enter image description here

我不明白 Fabric 中是否支持这两种数据类型(根据此链接)

https://learn.microsoft.com/en-us/fabric/data-warehouse/data-types

那么为什么我的管道失败了,我是否缺少任何配置或错误解释了错误消息?

azure-data-factory parquet data-warehouse microsoft-fabric
1个回答
0
投票

enter image description here

您遇到的错误表明 Parquet 文件中的数据与 SQL 数据仓库中的目标列之间存在类型不匹配。具体来说,Parquet 文件将数据存储为具有

BYTE_ARRAY
逻辑类型的
UTF8
,对应于 SQL 中的字符串类型,但目标列
PACKAGE_SIZE
定义为
FLOAT
。因此,根据
BYTE_ARRAY
UTF8
逻辑类型的错误兼容数据类型为
VARCHAR(8000)
.

这可能是将色谱柱类型从

float
更改为
varchar(8000)
以及
Datatime2
更改为
varchar(8000)
时获得管道成功的原因。 更多信息可以参考这个

© www.soinside.com 2019 - 2024. All rights reserved.