Вызовите функцию UDF Azure Cosmos DB из сценария powershell - PullRequest
0 голосов
/ 08 января 2019

У меня есть функция UDF в Cosmos DB, она принимает параметр и возвращает документы, которые удовлетворяют условию, на основе параметра.

Каждый документ, возвращаемый этой UDF, имеет 3 поля,

  • идентификатор клиента
  • Дата изменения
  • Статус клиента

Мне нужна эта информация в SQL Server SP, присутствующем в другой базе данных.

Я имею в виду сценарий powershell для переноса этих данных из базы данных Cosmos, сохранения их в таблице, локальной для базы данных сервера SQL, и последующего использования этой таблицы в SP.

Мне интересно, верен ли мой вышеизложенный подход для извлечения данных из базы данных Cosmos в базу данных SQL Server, и если да, то могу ли я узнать, можем ли мы выполнить UDF Cosmos DB из сценария powershell и использовать результирующий набор, возвращенный функцией UDF.

1 Ответ

0 голосов
/ 08 января 2019

На основании вашего описания, возможно, вы могли бы использовать Azure Data Factory .

Шаг 1: Следуйте статье , чтобы создать операцию копирования.

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

Затем, пожалуйста, следуйте инструкциям из этого документа :

Шаг 3: Сконфигурируйте ваш набор данных Sink:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...