【问题标题】:Call Azure Cosmos DB UDF function from a powershell script从 powershell 脚本调用 Azure Cosmos DB UDF 函数
【发布时间】:2019-01-08 00:29:18
【问题描述】:

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

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

  • 客户 ID
  • 修改日期
  • 客户状态

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

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

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

【问题讨论】:

    标签: powershell azure-cosmosdb


    【解决方案1】:

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

    Step1:按照article创建复制活动。

    Step2:配置 Cosmos db 源数据:

    sql:

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

    那么,请按照doc的步骤操作:

    第 3 步:配置您的 Sink 数据集:

    第 4 步:在复制活动中配置 Sink 部分,如下所示:

    步骤 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
    

    【讨论】:

    • 谢谢,我会试试这个方法。
    • @dks 好的,有任何问题,请告诉我。
    • @dks 是的,你可以把它标记为其他人参考的答案,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-04
    • 2022-01-10
    • 2022-06-23
    • 1970-01-01
    相关资源
    最近更新 更多