Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure functions 数据湖至宇宙数据库同步-单向_Azure Functions_Azure Data Lake_Azure Data Factory_Azure Cosmosdb_Azure Blob Storage - Fatal编程技术网

Azure functions 数据湖至宇宙数据库同步-单向

Azure functions 数据湖至宇宙数据库同步-单向,azure-functions,azure-data-lake,azure-data-factory,azure-cosmosdb,azure-blob-storage,Azure Functions,Azure Data Lake,Azure Data Factory,Azure Cosmosdb,Azure Blob Storage,我们在Azure data lake中有每日聚合数据(使用USQL脚本),我们计划使用Azure data factory将其复制到CosmosDB,以便我们可以将其用作报告后端。我想将数据湖的数据与CosmosDB同步(从湖到CosmosDB的一个方向)。如果lake中的任何文件被更新或删除,cosmosDB应该相应地更新 对此,我有一个想法——在USQL脚本中,我们可以向BlobStorage多输出一个输出,只包含运行细节(没有实际数据)——只是为了利用BlobTrigger,这样对于创建的

我们在Azure data lake中有每日聚合数据(使用USQL脚本),我们计划使用Azure data factory将其复制到CosmosDB,以便我们可以将其用作报告后端。我想将数据湖的数据与CosmosDB同步(从湖到CosmosDB的一个方向)。如果lake中的任何文件被更新或删除,cosmosDB应该相应地更新

对此,我有一个想法——在USQL脚本中,我们可以向BlobStorage多输出一个输出,只包含运行细节(没有实际数据)——只是为了利用BlobTrigger,这样对于创建的每个新blob,它都会自动调用Azure函数。Azure函数将运行ADF作业的各个部分,将数据从lake复制到CosmosDB

更新方案- 当我们重新聚合旧日期(其数据已在CosmosDB中摄取)时,新的blob将在blob存储中创建,但这次Azure函数将运行不同的活动-ADF的自定义活动,该活动将从CosmosDB中删除所有现有记录并摄取新记录。但有一个问题。新记录可能不同于旧的摄取记录,所以我们需要为每次运行维护所有记录的主键。为了解决这个问题,我们可以使用相同的USQL脚本将主键(CosmosDB中的分区键+id)保存在data lake中另一个单独的输出中。此输出将从ADF自定义活动中读取,以从CosmosDB中删除现有记录

请告知您对上述方法的想法。我的想法是否正确?有没有更好的方法/Azure服务可以在这里使用


提前感谢。

使用blob触发器似乎是一种很好的方法。在更新方案中,您可以使用DocumentClient.UpsertDocumentSync方法,而不是事后删除和插入。使用blob触发器似乎是一种很好的方法。在更新方案中,您可以使用DocumentClient.UpsertDocumentSync方法而不是删除和插入之后