自3天或4天以来,我在使用Azure Data Factory V2以镶木地板文件格式编写十进制值时遇到麻烦。
复制步骤非常简单,从包含数值的SQL源中,我使用复制活动将其映射到拼花文件中。
在运行时会引发以下异常:
{
"errorCode": "2200",
"message": "Failure happened on 'Source' side. ErrorCode=UserErrorParquetTypeNotSupported,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Decimal Precision or Scale information is not found in schema for column: ADDRESSLONGITUDE,Source=Microsoft.DataTransfer.Richfile.ParquetTransferPlugin,''Type=System.InvalidCastException,Message=Object cannot be cast from DBNull to other types.,Source=mscorlib,'",
"failureType": "UserError",
"target": "Copy Data"
}
在源代码中,抱怨列定义为numeric(32,6)类型。
我认为问题出在镶木地板上,因为将目标格式更改为csv会导致管道成功。
有什么建议吗?
根据杰伊的回答,这是整个数据集:
SELECT
[ADDRESSLATITUDE]
FROM
[dbo].[MyTable]
答案 0 :(得分:0)
基于数据工厂复制活动中的SQL Types to Parquet Logical Types和Data type mapping for Parquet files,它支持Decimal
数据类型。十进制数据转换为二进制数据类型。
返回您的错误消息:
“源”端发生故障。 ErrorCode = UserErrorParquetTypeNotSupported, 'Type = Microsoft.DataTransfer.Common.Shared.HybridDeliveryException, 在架构中找不到消息=小数精度或小数位数信息 对于列: ADDRESSLONGITUDE,Source = Microsoft.DataTransfer.Richfile.ParquetTransferPlugin,'' Type = System.InvalidCastException,Message =无法从中强制转换对象 DBNull转换为其他类型。,Source = mscorlib,'
如果您的数字数据具有null
值,它将被转换为Int
数据类型,而没有任何
小数精度或小数位数信息。
Csv格式没有此转换过程,因此您可以为数字数据设置默认值。