如何将数据从CosmosDB中的文档传输到Azure SQL数据库?

时间:2018-11-23 11:47:38

标签: json azure triggers azure-sql-database azure-cosmosdb

我试图建立一个系统,每次Cosmos DB存储中有一个新文件时,我的Azure函数都会被触发(Cosmos DB触发器),我的目标是从文件中获取传入数据并发送并将其发送到我的Azure SQL,因此我可以基于此创建实时的Power BI报告。 我对整个过程有一些疑问,如果有人可以提供帮助,我将不胜感激,因为我对在Microsoft文档中阅读的信息量(相关和无关)感到困惑。

  1. 我是否需要在Azure SQL数据库中创建一个与json数据相对应的表?就像我已经准备好表格模板一样,还是自动进行转换?
  2. 对于这种情况,当我执行Azure功能时,是否需要输入/输出绑定?我自己的理解是,我不需要任何约束力,但不确定。
  3. 是否可以从文档中选择要传输到SQL的数据?或者我只能说整个数据都应该传输到SQL数据库中?
  4. 此类任务的命令/代码是什么?例如,如果我想说这些数据(或整个文档,因为它是一个json文件)传输到SQL数据库。
  5. 我没有找到有关此特定任务的任何文档,因此,如果您可以向我发送指向该任务的链接,我也将不胜感激。
  6. 要使azure函数位于Cosmos DB和Azure SQL数据库之间,显然我需要在我的azure函数设置中包括一个集合/集合名称,但是我不知道这是什么,在Azure上创建Cosmos DB时创建?

我知道这是太多问题,但是我宁愿一次问所有这些问题,而不是提出几个主题。 也许这些信息已经存在了,但是由于我是该领域的新手,并且还编码,所以我发现自己很快迷路了,而且不确定是否在寻找正确的信息/文档/视频教程。

谢谢。

1 个答案:

答案 0 :(得分:0)

您的描述很详细,我试图涵盖您的所有问题。

  

1。我是否需要在Azure SQL数据库中创建一个与json数据相对应的表?我喜欢准备表格模板还是   转换会自动发生吗?

是的,您需要创建一个与cosmos db集合中的json格式相对应的表。它不会自动发生。

  

2。对于这种情况,当我执行Azure功能时,是否需要输入/输出绑定?我自己的理解是,我不需要   任何约束力,但我不确定。

否,您不需要配置输入和输出绑定。只需要您的cosmos数据库配置,例如数据库名称,集合名称。请参考此example

  

3。是否可以从文档中选择要传输到SQL的数据?或者我只能说整个数据都应该转移到SQL   数据库?

在此问题之前,我想根据您的要求为您提供建议。您可以按照以下步骤操作:

a。使用Azure Function Cosmos Db触发器监视集合中添加或更新的文档。

b。在上面的功能中,您需要收集传入的文档,然后使用cosmos db sdk将它们保存到新的集合中。(现在称为temp collection)

c。这是重点,请使用Azure Data Factory copy activity将临时集合中的数据复制到sql数据库中。请参考以下文档:

https://docs.microsoft.com/en-us/azure/data-factory/connector-azure-cosmos-db

https://docs.microsoft.com/en-us/azure/data-factory/connector-azure-sql-database

回到第三个问题,可以。您可以设置query设置来过滤源数据。

  

4。此类任务的命令/代码是什么?例如,如果我想说传输这些数据(或整个文档,因为它是一个json   文件)到SQL数据库。

Azure Data Factory复制活动可以用sdk或powershell调用。请参阅此doc

  

5。我没有找到有关此特定任务的任何文档,因此,如果您可以向我发送指向该任务的链接,我也将不胜感激。

在以上视图中找到答案。

  

6。为了使azure函数位于Cosmos DB和Azure SQL数据库之间,我显然需要一个集合/集合名称   包括在我的azure函数设置中,但是我不知道那是什么,   在Azure上创建Cosmos DB时会创建什么东西?

要使用我的方案,您需要创建临时集合。执行复制活动后,需要将其清空。我建议您每天运行作业,以便可以清空昨天的数据。