2017-10-05 92 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