如何自动将数据从Cosmos DB传输到Azure SQL数据库?

时间:2018-11-16 10:29:39

标签: sql function azure triggers azure-cosmosdb

每次Cosmos DB收到新文档时,我想从Cosmos DB文档中采样相关数据,并将其自动发送到Azure SQL数据库。 整个目的是创建一个实时的Power BI报表,该报表将使用Cosmos DB中的最新数据进行更新,但是由于我不需要显示所有内容,因此我在Azure中创建了一个SQL数据库,而我只缺少如何使当Cosmos DB收到新文档时触发的Azure函数。该函数还需要获取相关数据并将其发送到Azure SQL。 有标准的方法吗? 我必须制作一个Azure Function应用程序吗? 我对编码和Azure都很陌生,因此,如果有人可以帮助您使用入门语言,我将不胜感激。 但是,请提供任何帮助。

1 个答案:

答案 0 :(得分:1)

您可以使用使用CosmosDB触发器的Azure函数轻松地做到这一点。

好吧,只要您要定位的CosmosDB集合中有多个更改或添加项之一,就会触发该触发器。然后只需添加您自己的代码即可进行SQL插入。

namespace CosmosDBSamplesV2
{
    public static class CosmosTrigger
    {
        [FunctionName("CosmosTrigger")]
        public static void Run([CosmosDBTrigger(
            databaseName: "CosmosDBName",
            collectionName: "CosmosColName",
            ConnectionStringSetting = "CosmosDBConnection",
            LeaseCollectionName = "leases",
            CreateLeaseCollectionIfNotExists = true)]IReadOnlyList<Document> documents, 
            ILogger log)
        {
            if (documents != null && documents.Count > 0)
            {
                //do SQL insert with your code here
            }
        }
    }
}

您可以在此处了解如何从azure函数连接到SQL数据库:https://docs.microsoft.com/en-us/azure/azure-functions/functions-scenario-database-table-cleanup

您可以在此处了解有关CosmosDB相关的Azure函数的更多信息:https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-cosmosdb-v2