从Powershell脚本调用Azure Cosmos DB UDF函数

时间:2019-01-08 00:29:19

标签: powershell azure-cosmosdb

我在Cosmos DB中具有UDF函数,它需要一个参数并根据该参数返回满足条件的文档。

此UDF返回的每个文档都有3个字段,

  • 客户编号
  • 修改日期
  • 客户状态

我需要另一个数据库中存在的SQL Server SP中的此信息。

我正在考虑使用Powershell脚本从Cosmos DB中获取此数据,将其存储在SQL Server数据库本地的表中,然后最终在SP中使用该表。

我想知道我上面的从Cosmos DB到SQL Server数据库中获取数据的方法是否正确,如果可以,我是否知道我们是否可以从powershell脚本执行cosmos DB UDF并使用UDF返回的结果集。

1 个答案:

答案 0 :(得分:1)

根据您的描述,也许您可​​以使用Azure Data Factory

第1步:按照article创建“复制”活动。

enter image description here

第2步:配置Cosmos db源数据:

sql:

SELECT udf.adf(c.fields).CustomerID,
udf.adf(c.fields).ModifiedDate,
udf.adf(c.fields).CustomerStatus FROM c

enter image description here

然后,请按照此doc中的步骤进行操作:

第3步:配置接收器数据集:

enter image description here

步骤4:在复制活动中配置接收器部分,如下所示:

enter image description here

第5步:在数据库中,定义与sqlWriterTableType相同名称的表类型。请注意,表类型的架构应与输入数据返回的架构相同。

    CREATE TYPE [dbo].[CsvType] AS TABLE(
    [ID] [varchar](256) NOT NULL,
    [Date] [varchar](256) NOT NULL,
    [Status ] [varchar](256) NOT NULL
)

步骤6:在您的数据库中,使用与SqlWriterStoredProcedureName相同的名称定义存储过程。它处理来自指定源的输入数据,并合并到输出表中。请注意,存储过程的参数名称应与数据集中定义的“ tableName”相同。

Create PROCEDURE convertCsv @ctest [dbo].[CsvType] READONLY
AS
BEGIN
  MERGE [dbo].[adf] AS target
  USING @ctest AS source
  ON (1=1)
  WHEN NOT MATCHED THEN
      INSERT (id,data,status)
      VALUES (source.ID,source.Date,source.Status );
END