使用Azure数据工厂将数据从data Lake Store(JSON文件)移动到Azure Search



我正在尝试使用数据工厂将json文件从Azure Data Lake移动到Azure Search。但它显示了以下错误,

Copy活动在源端遇到用户错误:ErrorCode=UserErrorSourceDataContainsMoreColumnsThanDefined,'Type=Microsoft。数据传输。常见的共享。HybridDeliveryException,Message=处理行号为1的"Csv/Tsv Format Text"源"file.json"时发现错误:发现的列数超过预期列数:52。,source=Microsoft.DataTransfer.Common,".

我们如何将数据从json文件移动到Azure Search?

Update1:我在源中使用了JSON格式,但在目标Azure Search中,createddate列是DateTimeOffset类型的列(String->DateTimeOffset)。因此得到以下错误,

Copy活动在源端遇到用户错误:ErrorCode=UserErrorInvalidDataValue,'Type=Microsoft。数据传输。常见的共享。HybridDeliveryException,Message=列"createddate"包含无效值"1/5/2017 2:03:55 PM"。无法将"2017年1月5日下午2:03:55"转换为格式为"yyyy-MM-dd HH:MM:ss.ffffffff"的类型"DateTime"。,Source=Microsoft.DataTransfer.Common,"type=System.FormatException,Message=String未被识别为有效的DateTime。,来源=mscorlib,'。

我试图更改Soure端的Datetime格式,但由于json文件的原因,没有任何结果。当我们试图从json中获取数据时,所有数据都将是字符串类型。

更新2:

当我完成那个Datetime错误时,下面的错误将出现

复制活动在接收端遇到用户错误:ErrorCode=UserErrorAzuerSearchOperation,'Type=Microsoft。数据传输。常见的共享。HybridDeliveryException,Message=将数据写入Azure搜索索引"searchindex"时出错。CloudException请求ID:"153be0ce-0bda-4722-8c9e-951b5325eaa8"。状态代码:"BadRequest"。,来源=微软。数据传输。ClientLibrary。AzureSearch,'Type=Microsoft。Rest.Azure.CloudException,Message=请求无效。详细信息:操作:0:文档键不能丢失或为空。

请给我一个克服这个问题的解决方案。。提前感谢!

看起来您将源格式指定为"文本格式"而不是";JsonFormat";在输入ADLS数据集中。请参阅JSON格式的相应支持设置,并提供详细信息和示例。

如果您使用的是ADF v1,您可以通过复制向导尝试author,该向导将指导您完成UI中的配置。

我使用了createddate。价值ToString("yyyy-MM-dd HH:MM:ss.ffffff")而不是createddate。ToString("yyyy-MM-dd HH:MM:ss.fffffff"),它工作得很好,因为createddate是一个可以为null的列(nullable)。

创建日期。价值ToString("yyyy-MM-dd HH:MM:ss.fffffff")

错误"文档密钥不能丢失或为空"表示您要插入Azure搜索的行中的Azure搜索索引密钥为空。你能仔细检查一下Key列是否在源端提供,并且总是不为空吗?

最新更新