Azure functions 使用ADF在SQL和CosmosDB之间移动数据,并进行复杂的数据转换

Azure functions 使用ADF在SQL和CosmosDB之间移动数据,并进行复杂的数据转换,azure-functions,azure-data-factory,Azure Functions,Azure Data Factory,我正在尝试在Azure SQL数据库和ADF中的Cosmos DB之间移动数据。但据我所知,复制活动不允许我对数据进行任何更改。数据流选项仅允许我使用预定功能。(Abs、cos、aso) 我创建了一个Azure函数,其中包含转换所需的数学。我将试着用一个例子来说明 SQL查询的结果(可能有多条记录): 然后我需要函数使用int1、int2作为Azure函数的参数。我需要插入Cosmos DB的对象看起来像: id = 1, int1 = 4, int2 = 3, Calculated1 = Az

我正在尝试在Azure SQL数据库和ADF中的Cosmos DB之间移动数据。但据我所知,复制活动不允许我对数据进行任何更改。数据流选项仅允许我使用预定功能。(Abs、cos、aso)

我创建了一个Azure函数,其中包含转换所需的数学。我将试着用一个例子来说明

SQL查询的结果(可能有多条记录):

然后我需要函数使用
int1、int2
作为Azure函数的参数。我需要插入Cosmos DB的对象看起来像:

id = 1,
int1 = 4,
int2 = 3,
Calculated1 = AzureFunction.Result[0]
Calculated2 = AzureFunction.Result[1]

我的场景有点复杂,但这是最低限度的。这可以在ADF中完成吗?

对于您的场景,不太确定如何进行数据转换,有两种解决方法

解决方案1:

如果它非常复杂,那么您可以这样做:查找active+Azure函数:

  • 查找活动:运行SQL查询以获取结果
  • Azure函数:将查找输出传递给函数,函数do 数据转换并将数据传输到Cusmos DB
  • 管道概述:

    解决方案2:

    如果数据转换不复杂,那么可以使用

  • 源:SQL数据库作为源运行查询
  • :创建新列
    Calculate1
    计算2
    ,构建 需要
  • 接收器:将自定义数据库设置为接收器
  • 数据流概述:


    HTH.

    数据流几乎肯定是正确的方法,它的表达式可以执行复杂的数学运算。你能举一个这样一个公式的例子吗?Hi@Steffen Hvid,不太确定函数方法是怎么做的,获取
    Calculate1
    Calculate2
    是一个复杂的数据转换吗?我正在将坐标从度转换为ETRS89,而这方面的数学对于我来说是非常复杂的,无法进行实际计算。幸运的是,有一个库,可以转换这个。因此,我需要使用Azure函数进行计算。但这个函数的作用并不重要。原则上,解决方案可以是将数据传递到azure函数,然后将数据返回到cosmos db。谢谢您的输入。我已经决定实际上只是将1-1拷贝到CosmosDB,然后创建函数来选择所有不包含转换数据的记录。然后把它转换过来。这使得可以在事后运行我的计算,并且我的复制活动不依赖于功能可用性。
    id = 1,
    int1 = 4,
    int2 = 3,
    Calculated1 = AzureFunction.Result[0]
    Calculated2 = AzureFunction.Result[1]