Azure Data Factory V2中使用小数的拼花麻烦

时间:2019-03-19 10:58:30

标签: azure-data-factory-2

自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]

query result

1 个答案:

答案 0 :(得分:0)

基于数据工厂复制活动中的SQL Types to Parquet Logical TypesData type mapping for Parquet files,它支持Decimal数据类型。十进制数据转换为二进制数据类型。

enter image description here

返回您的错误消息:

  

“源”端发生故障。   ErrorCode = UserErrorParquetTypeNotSupported,     'Type = Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,     在架构中找不到消息=小数精度或小数位数信息   对于列:     ADDRESSLONGITUDE,Source = Microsoft.DataTransfer.Richfile.ParquetTransferPlugin,''     Type = System.InvalidCastException,Message =无法从中强制转换对象   DBNull转换为其他类型。,Source = mscorlib,'

如果您的数字数据具有null值,它将被转换为Int数据类型,而没有任何 小数精度或小数位数信息。

enter image description here

Csv格式没有此转换过程,因此您可以为数字数据设置默认值。