我们在Azure Data湖中有每日聚合数据(使用USQL脚本),我们计划使用Azure数据工厂将其复制到CosmosDB,以便我们可以将其用作报告后端。我想将数据湖中的数据与CosmosDB同步(从湖泊到CosmosDB的一个方向)。如果在湖中更新或删除任何文件,则应相应更新cosmosDB。
我有一个想法 - 在USQL脚本中我们可以再向BlobStorage输出一个输出,只有运行细节(没有实际数据) - 只是为了利用BlobTrigger,这样对于每个创建的新blob,它会自动调用Azure功能。 Azure功能将运行各自的ADF作业片段,将数据从湖复制到CosmosDB。
更新方案 - 当我们重新聚合旧日期(其数据已经在CosmosDB中被摄取)时,将在blob存储中创建新的blob,但这次Azure函数将运行不同的活动 - ADF的自定义活动将删除CosmosDB中的所有现有记录并摄取新记录。但是有一个问题。新记录可能与旧的记录不同,因此我们需要维护每次运行的所有记录的主键。要解决此问题,我们可以使用相同的USQL脚本将主键(CosmosDB中的分区键+ id)保存在数据湖中的另一个单独输出中。此输出将从ADF自定义活动中读取,以从CosmosDB中删除现有记录。
请让我们了解您对上述方法的看法。我是否正确思考?有没有更好的方法/ Azure服务,我可以在这里使用?
提前致谢。