Копия действия фабрики данных Azure. Оцените столбец в таблице приемников с помощью @pipeline().TriggerTime
В 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 ответа
В зависимости от вашей ситуации, пожалуйста, настройте сервер SQL stored procedure
в вашем приемнике sql server в качестве обходного пути.
Пожалуйста, следуйте инструкциям из этого документа:
Шаг 1: Настройте ваш набор данных Sink:
Шаг 2. Настройте раздел "Мойка" в операции копирования следующим образом:
Шаг 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
Надеюсь, что это поможет вам. Любая проблема, пожалуйста, не стесняйтесь, дайте мне знать.
Вы можете рассмотреть возможность использования хранимой процедуры на стороне приемника для применения исходных данных в таблице приемников, указав " sqlWriterStoredProcedureName " в SqlSink. Передайте время выполнения конвейера хранимой процедуре в качестве параметра и вставьте в таблицу приемников.