Я получаю текстовый файл (на сегодняшнюю дату) со вчерашней датой в нем, и я хочу динамически получать это имя файла в моем конвейере фабрики данных.
Файл автоматически помещается в файловую систему, и я хочу скопировать этот файл в хранилище больших двоичных объектов. В моем примере ниже я имитирую это путем копирования из большого двоичного объекта в большой двоичный объект.
Например: filename_2018-02-11.txt прибыл сегодня (2018-03-12) с датой вчера (2018-02-11). Как я могу забрать этот файл на сегодняшний день? Вчерашний срез действительно запустился, но файла еще не было.
Вот мой пример:
{"$schema": "http://datafactories.schema.management.azure.com/schemas/2015-09-01/Microsoft.DataFactory.Pipeline.json",
"name": "CopyPipeline-fromBlobToBlob",
"properties": {
"activities": [
{
"type": "Copy",
"typeProperties": {
"source": {
"type": "BlobSource",
"recursive": true
},
"sink": {
"type": "BlobSink",
"copyBehavior": "",
"writeBatchSize": 0,
"writeBatchTimeout": "00:00:00"
},
"enableSkipIncompatibleRow": true
},
"inputs": [
{
"name": "InputDataset-1"
}
],
"outputs": [
{
"name": "OutputDataset-1"
}
],
"policy": {
"timeout": "1.00:00:00",
"concurrency": 1,
"executionPriorityOrder": "NewestFirst",
"style": "StartOfInterval",
"retry": 3,
"longRetry": 0,
"longRetryInterval": "00:00:00"
},
"scheduler": {
"frequency": "Day",
"interval": 1,
"offset": "05:00:00"
},
"name": "activity_00"
}
],
"start": "2018-03-07T00:00:00Z",
"end": "2020-03-08T00:00:00Z",
"isPaused": false,
"pipelineMode": "Scheduled"
}
}
2 ответа
Вы можете использовать EndOfInterval
вместо StartOfInterval
в политике. Это будет использовать конец дня вместо начала дня для выполнения. Вы также можете установить соответствующее смещение, если файл недоступен в полночь.
В ADF v2 вы можете использовать встроенные переменные (@pipeline().TriggerTime
):
https://docs.microsoft.com/en-us/azure/data-factory/control-flow-system-variables
И в наборе исходных данных (InputDataset-1) укажите путь к файлу / имя файла примерно так:
@concat('YOUR BASE PATH IN BLOB/', 'filename_',
addhours(pipeline().TriggerTime, -1, 'yyyy'), '-',
addhours(pipeline().TriggerTime, -1, 'MM'), '-',
addhours(pipeline().TriggerTime, -1, 'dd'), '.txt'))
Вы также можете использовать @trigger().scheduledTime
Всегда иметь одну и ту же дату, когда, например, трубопровод выйдет из строя. Но помните, что это доступно только в области действия триггера. В моих тестах он оценивался только для триггера расписания.
Похожие вопросы
Новые вопросы
azure
Microsoft Azure - это платформа для облачных вычислений «Платформа как услуга» и «Инфраструктура как услуга». Используйте этот тег для вопросов по программированию, касающихся Azure. Общая справка по серверу может быть получена в разделе «Суперпользователь» или «Ошибка сервера».