我正在尝试使用Data Factory将json文件从Azure Data Lake移动到Azure Search。 但它显示以下错误,
复制活动在源端遇到用户错误:ErrorCode = UserErrorSourceDataContainsMoreColumnsThanDefined,'Type = Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message =在处理'Csv / Tsv格式文本'源'file.json'时发现错误第1行:找到的列多于预期的列数:52。,Source = Microsoft.DataTransfer.Common,'。
我们如何将数据从json文件移动到Azure Search?
UPDATE1: 我在源代码中使用了JSON格式,但在目标Azure搜索中,createddate列是DateTimeOffset类型列(String - > DateTimeOffset)。 所以得到了以下错误,
复制活动在源端遇到用户错误:ErrorCode = UserErrorInvalidDataValue,'Type = Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message = Column'createdate'包含无效值'1/5/2017 2:03:下午55点'。无法将'1/5/2017 2:03:55 PM'转换为'DateTime',格式为'yyyy-MM-dd HH:mm:ss.fffffff'。,Source = Microsoft.DataTransfer.Common,''Type = System.FormatException,Message = String未被识别为有效的DateTime。,Source = mscorlib,'。
我尝试在Soure端更改日期时间格式,但由于json文件没有任何效果。当我们尝试从json获取数据时,所有数据都将是字符串类型。
UPDATE2:
当我完成Datetime错误时,会出现以下错误
复制活动在Sink端遇到用户错误:ErrorCode = UserErrorAzuerSearchOperation,'Type = Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message =在向Azure搜索索引'searchindex'写入数据时发生错误.CloudException RequestId:'153be0ce -0bda-4722-8c9e-951b5325eaa8'.Status代码:'BadRequest'。,Source = Microsoft.DataTransfer.ClientLibrary.AzureSearch,''Type = Microsoft.Rest.Azure.CloudException,Message =请求无效。详细信息:操作:0:文档键不能丢失或为空。
请建议我克服这个问题的解决方案..提前致谢!
答案 0 :(得分:1)
看起来您在输入ADLS数据集中将源格式指定为“TextFormat”而不是“JsonFormat”。有关详细信息和示例,请参阅相应支持设置的JSON format。
如果您使用的是ADF v1,可以通过copy wizard尝试作者,它将引导您完成UI中的配置。
答案 1 :(得分:0)
我使用了createddate.Value.ToString(" yyyy-MM-dd HH:mm:ss.fffffff")而不是createddate.ToString(" yyyy-MM-dd HH:mm :ss.fffffff")并且它工作正常,因为createddate是一个可以为空的列(Nullable)。
createddate.Value.ToString(" yyyy-MM-dd HH:mm:ss.fffffff")
答案 2 :(得分:0)
错误“文档密钥不能丢失或为空”表示Azure搜索索引键在要插入Azure搜索的行中为空。你能仔细检查源列中是否提供了Key列,并且始终不为null?