Копия действия фабрики данных Azure. Оцените столбец в таблице приемников с помощью @pipeline (). TriggerTime - PullRequest
0 голосов
/ 28 сентября 2018

В Data Factory V2 я пытаюсь реализовать поток копирования данных из одной базы данных SQL Azure в другую.

Я сопоставил все столбцы исходной таблицы с таблицей приемников, но в приемникеТаблица У меня есть пустой столбец, в котором я хотел бы ввести время выполнения конвейера.

Кто-нибудь знает, как заполнить этот столбец в таблице приемников без его присутствия в исходной таблице?

Ниже приведен код моего конвейера копирования

{
"name": "FLD_Item_base",
"properties": {
    "activities": [
        {
            "name": "Copy_Team",
            "description": "copytable",
            "type": "Copy",
            "policy": {
                "timeout": "7.00:00:00",
                "retry": 0,
                "retryIntervalInSeconds": 30,
                "secureOutput": false,
                "secureInput": false
            },
            "typeProperties": {
                "source": {
                    "type": "SqlSource"
                },
                "sink": {
                    "type": "SqlSink",
                    "writeBatchSize": 10000,
                    "preCopyScript": "TRUNCATE TABLE Team_new"
                },
                "enableStaging": false,
                "dataIntegrationUnits": 0,
                "translator": {
                    "type": "TabularTranslator",
                    "columnMappings": {
                        "Code": "Code",
                        "Name": "Name"
                    }
                }
            },
            "inputs": [
                {
                    "referenceName": "Team",
                    "type": "DatasetReference"
                }
            ],
            "outputs": [
                {
                    "referenceName": "Team_new",
                    "type": "DatasetReference"
                  }
              ]
          }
      ]
  }
}

В моей таблице приемников у меня уже есть столбец data_load, в который я хотел бы вставить дату выполнения конвейера, но в настоящее время я не отображал ее.

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

В зависимости от ситуации, пожалуйста, настройте сервер SQL stored procedure в приемнике сервера SQL в качестве обходного пути.

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

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

enter image description here

Шаг 2: Сконфигурируйте раздел Sink в операции копирования следующим образом:

enter image description here

Шаг 3. В вашей базе данных определите тип таблицы с тем же именем, что и sqlWriterTableType.Обратите внимание, что схема типа таблицы должна совпадать со схемой, возвращаемой вашими входными данными.

    CREATE TYPE [dbo].[testType] AS TABLE(
    [ID] [varchar](256) NOT NULL,
    [EXECUTE_TIME] [datetime] NOT NULL
)
GO

Шаг 4. В вашей базе данных определите хранимую процедуру с тем же именем, что и SqlWriterStoredProcedureName.Он обрабатывает входные данные из указанного вами источника и объединяет их в выходную таблицу.Обратите внимание, что имя параметра хранимой процедуры должно совпадать с именем «tableName», определенным в наборе данных.

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

Надеюсь, это поможет вам. Если у вас возникли проблемы, пожалуйста, дайте мне знать.

0 голосов
/ 28 сентября 2018

Вы можете рассмотреть возможность использования хранимой процедуры на стороне приемника для применения исходных данных в таблице приемников, указав « sqlWriterStoredProcedureName » SqlSink.Передайте время выполнения конвейера хранимой процедуре в качестве параметра и вставьте в таблицу приемников.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...