Вставьте @trigger().startTime в таблицу sql в Azure DataFactory
У меня есть DataFactory, где источником является CSV, а местом назначения является хранилище данных SQL Azure.
таблица в хранилище данных SQL Azure имеет дополнительный столбец DateTime, когда срабатывал триггер.
Как я могу иметь это работать при отображении схемы?
примечание: в хранилище данных SQL Azure невозможно иметь столбец со значением по умолчанию GETDATE(), как в базе данных SQL Azure.
Столбец в хранилище данных SQL является "InsertedOn"
Мой конвейер выглядит так:
{
"name": "Pipeline01",
"properties": {
"activities": [
{
"name": "CopyCSVtoDW",
"type": "Copy",
"policy": {
"timeout": "7.00:00:00",
"retry": 0,
"retryIntervalInSeconds": 30,
"secureOutput": false,
"secureInput": false
},
"typeProperties": {
"source": {
"type": "BlobSource",
"recursive": true
},
"sink": {
"type": "SqlDWSink",
"allowPolyBase": false,
"writeBatchSize": 10000
},
"enableStaging": false,
"enableSkipIncompatibleRow": false,
"translator": {
"type": "TabularTranslator",
"columnMappings": {
"Id": "pointconnectnativeid",
"ValueDate": "valuedate",
"Value": "value",
"InsertedOn": "insertedon",
"forecastDate": "forecastDate"
}
}
},
"inputs": [
{
"referenceName": "SourceCSV",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "DestinationDW",
"type": "DatasetReference"
}
]
}
]
},
"type": "Microsoft.DataFactory/factories/pipelines"
}
вот мой источник:
{
"name": "SourceCSV",
"properties": {
"linkedServiceName": {
"referenceName": "skdwstorage",
"type": "LinkedServiceReference"
},
"parameters": {
"triggerDateTime": {
"type": "Object",
"defaultValue": "@trigger().startTime"
}
},
"type": "AzureBlob",
"structure": [
{
"name": "Id",
"type": "String"
},
{
"name": "ValueDate",
"type": "DateTime",
"format": "dd.MM.yyyy HH:mm:ss"
},
{
"name": "Value",
"type": "Decimal"
},
{
"name": "InsertedOn",
"type": "DateTime",
"description": "@trigger().startTime",
"format": "dd.MM.yyyy HH:mm:ss"
},
{
"name": "forecastDate",
"type": "DateTime",
"format": "dd.MM.yyyy HH:mm:ss"
}
],
"typeProperties": {
"format": {
"type": "TextFormat",
"columnDelimiter": "|",
"rowDelimiter": "\n",
"quoteChar": "\"",
"nullValue": "\\N",
"encodingName": null,
"treatEmptyAsNull": true,
"skipLineCount": 0,
"firstRowAsHeader": true
},
"fileName": "",
"folderPath": "csv"
}
},
"type": "Microsoft.DataFactory/factories/datasets"
}
1 ответ
В вашем определении триггера.json вы можете определить параметр с именем TriggerStartTime:
"parameters": {
" TriggerStartTime": "@trigger().startTime"
}
В вашем случае, например:
{
"name": "Pipeline01Trigger",
"properties": {
"runtimeState": "Started",
"pipelines": [
{
"pipelineReference": {
"referenceName": "Pipeline01",
"type": "PipelineReference"
},
"parameters": {
"TriggerStartTime": "@trigger().startTime"
}
}
],
"type": "ScheduleTrigger",
"typeProperties": {
"recurrence": {
"frequency": "Hour",
"interval": 1,
"startTime": "2019-01-01T00:00:00Z",
"timeZone": "UTC"
}
}
}
}
В разделе параметров вашего Pipeline01 вы должны установить значение по умолчанию для параметра.
После того, как в вашей операции копирования вы можете сопоставить этот параметр с:
@pipeline().parameters.TriggerStartTime
В вашем случае что-то вроде:
"columnMappings": {
"Id": "pointconnectnativeid",
"ValueDate": "valuedate",
"Value": "value",
"InsertedOn": "@pipeline().parameters.TriggerStartTime",
"forecastDate": "forecastDate"
}
Здесь вы можете найти некоторую информацию:
https://docs.microsoft.com/en-us/azure/data-factory/how-to-create-schedule-trigger
https://docs.microsoft.com/es-es/azure/data-factory/control-flow-expression-language-functions