2017-10-05 77 views
0

我已经使用sliceIdentifierColumnName设置了ADF管道,该管道运行良好,因为它按照预期填充了GUID字段。然而,最近这个字段停止填充,刷新将工作,但sliceIdentifierColumnName字段的值将为null,或者偶尔负载会失败,因为它试图用值1填充此字段,导致切片加载失败。Azure ADF sliceIdentifierColumnName未正确填充

这个变化发生在一个时间点之前,它完美地工作之前,它反复无法正确填充字段。我确信没有对导致突然失败的管道进行更改。任何指针,我应该看什么?

这里是管道源的摘录,我正在从Amazon Redshift的表中读取并写入Azure SQL表。

"activities": [ 
     { 
      "type": "Copy", 
      "typeProperties": { 
       "source": { 
        "type": "RelationalSource", 
        "query": "$$Text.Format('select * from mytable where eventtime >= \\'{0:yyyy-MM-ddTHH:mm:ssZ}\\' and eventtime < \\'{1:yyyy-MM-ddTHH:mm:ssZ}\\'  ' , SliceStart, SliceEnd)" 
       }, 
       "sink": { 
        "type": "SqlSink", 
        "sliceIdentifierColumnName": "ColumnForADFuseOnly", 
        "writeBatchSize": 0, 
        "writeBatchTimeout": "00:00:00" 
       } 
      }, 
      "inputs": [ 
       { 
        "name": "AmazonRedshiftSomeName" 
       } 
      ], 
      "outputs": [ 
       { 
        "name": "AzureSQLDatasetSomeName" 
       } 
      ], 
      "policy": { 
       "timeout": "1.00:00:00", 
       "concurrency": 10, 
       "style": "StartOfInterval", 
       "longRetry": 0, 
       "longRetryInterval": "00:00:00" 
      }, 
      "scheduler": { 
       "frequency": "Hour", 
       "interval": 2 
      }, 
      "name": "Activity-somename2Hour" 
     } 
    ], 

另外,这里是误差输出文本

拷贝活动在水槽中遇到用户错误:.database.windows.net侧:错误码= UserErrorInvalidDataValue,'类型= Microsoft.DataTransfer.Common.Shared .HybridDeliveryException,Message = Column'ColumnForADFuseOnly'包含无效值'1'。Source = Microsoft.DataTransfer.Common,''Type = System.ArgumentException,Message =值的类型与列类型不匹配。不能存储< 1 >在ColumnForADFuseOnly列中。 预期类型是Byte []。,Source = System.Data,''Type = System.ArgumentException,Message =值的类型与列类型Source = System.Data'不匹配。

这是源数据集的一部分,它是一个包含所有数据类型作为字符串的表。

{ 
    "name": "AmazonRedshiftsomename_2hourly", 
    "properties": { 
     "structure": [ 
      { 
       "name": "eventid", 
       "type": "String" 
      }, 
      { 
       "name": "visitorid", 
       "type": "String" 
      }, 
      { 
       "name": "eventtime", 
       "type": "Datetime" 
      } 
} 

最后,目标表是相同的源表,每个列名映射至其在天青对应,与在天青的附加列的例外命名 [ColumnForADFuseOnly]二元NULL, 正是这种这是现在正在或者填充空值或1 感谢柱,

+0

可以显示ADF JSON和表DDL的示例吗? – SQLBadPanda

回答

0

需要定义[ColumnForADFuseOnly]为二进制(32),binary没有长度修改默认到1的长度,从而截断您sliceIdentifier。 ..

当在数据定义或变量声明语句中未指定n时,缺省长度为1.当未使用CAST函数指定n时,默认长度为30。请参阅here

+0

我刚刚尝试过这一点,它完美地工作 - 这正是问题所在。非常感谢。 –

+0

没问题:)你可以将帖子标记为已回答 – SQLBadPanda