我在Cosmos DB中具有UDF函数,它需要一个参数并根据该参数返回满足条件的文档。
此UDF返回的每个文档都有3个字段,
我需要另一个数据库中存在的SQL Server SP中的此信息。
我正在考虑使用Powershell脚本从Cosmos DB中获取此数据,将其存储在SQL Server数据库本地的表中,然后最终在SP中使用该表。
我想知道我上面的从Cosmos DB到SQL Server数据库中获取数据的方法是否正确,如果可以,我是否知道我们是否可以从powershell脚本执行cosmos DB UDF并使用UDF返回的结果集。
答案 0 :(得分:1)
根据您的描述,也许您可以使用Azure Data Factory。
第1步:按照article创建“复制”活动。
第2步:配置Cosmos db源数据:
sql:
SELECT udf.adf(c.fields).CustomerID,
udf.adf(c.fields).ModifiedDate,
udf.adf(c.fields).CustomerStatus FROM c
然后,请按照此doc中的步骤进行操作:
第3步:配置接收器数据集:
步骤4:在复制活动中配置接收器部分,如下所示:
第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