我正在尝试使用Data Factory将JSON文件从Azure Data Lake移动到Azure Search。但它显示以下错误:
复制活动在源端遇到用户错误:ErrorCode=UserErrorSourceDataContainsMoreColumnsThanDefined,'Type =Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=处理行号为1的'Csv/Tsv Format Text'源'file.json'时发现错误:找到的列数比预期的列数多:52.,Source =Microsoft.DataTransfer.Common,'.
如何将数据从JSON文件移动到Azure搜索?
**Update 1:**我在源中使用了JSON格式,但在目标Azure Search中createddate列是DateTimeOffset类型列(String -〉DateTimeOffset)。因此得到以下错误,
复制活动在源端遇到用户错误:ErrorCode=UserErrorInvalidDataValue,'Type =Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Column 'createddate'包含无效值'1/5/2017 2:03:55 PM '。无法将'1/5/2017 2:03:55 PM'转换为格式为'yyyy-MM-dd HH:mm:ss. fffffff '.,Source=Microsoft.DataTransfer.Common,''Type=System.FormatException,Message=String未被识别为有效的DateTime.,Source=mscorlib,'。
我尝试在源端更改日期时间格式,但由于json文件的原因,没有任何效果。当我们尝试从json中获取数据时,所有数据都将是字符串类型。
更新2:
当我完成了日期时间错误,然后下面的错误来了
复制活动在接收器端遇到用户错误:ErrorCode=UserErrorAzuerSearchOperation,'Type =Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=将数据写入Azure搜索索引“searchindex”时出错。CloudException RequestId:'153 be 0 ce-0 bda-4722- 8 c9 e-951 b5325 eaa 8'.状态代码:'BadRequest'.,Source=Microsoft.DataTransfer.ClientLibrary.AzureSearch,'' Type=Microsoft.Rest.Azure.CloudException,Message=请求无效。详细信息:操作:0:文档密钥不能缺失或为空。
请建议我一个解决方案,以克服这一点..提前感谢!
3条答案
按热度按时间cwtwac6a1#
看起来您在输入ADLS数据集中将源格式指定为“TextFormat”而不是“JsonFormat”。请参阅有关相应支持设置的JSON格式的详细信息和示例。
如果您使用的是ADF v1,您可以通过copy wizard尝试author,它将引导您完成UI中的配置。
klr1opcd2#
我使用了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”)
7hiiyaii3#
错误“文档键不能缺失或为空”意味着要插入Azure搜索的行中的Azure搜索索引键为空。能否仔细检查源端是否提供了键列并且始终不为空?