Динамически добавлять дату и время к имени файла во время копирования или при указании имени в наборе данных BLOB-объектов
Я сохраняю файл в хранилище BLOB-объектов в фабрике данных V2, когда я указываю место для сохранения, я вызываю файл (например) file1, и он сохраняется в BLOB-файле как file1, нет проблем. Но могу ли я использовать функцию динамического содержимого, чтобы добавить дату и время к имени файла, так что это будет что-то вроде file1_01-07-2019_14-30-00?(7 января 14:30:00 на всякий случай, если его неудобно читать). В качестве альтернативы, можно ли вывести результат (имя файла) действия webhook для следующего действия (функции)?
Спасибо.
3 ответа
Я не мог заставить это работать без непосредственного редактирования JSON-файла конвейера копирования (конец 2018 года - может больше не понадобиться). Вам нужен динамический код в конвейере копирования JSON и параметры, определенные в наборе данных для настройки параметров имени файла.
В наборе данных определите "Параметры" для пути к папке и / или имени файла (нажмите "+" и дайте им любое имя), например, sourceFolderPath, sourceFileName.
Затем в наборе данных в разделе "Соединение" включите следующее в определение "Путь к файлу": @dataset(). SourceFolderPath и @dataset (). SourceFileName по обе стороны от "/" (см. Скриншот ниже).
В конвейере копирования нажмите "Код" в верхнем правом углу окна конвейера и найдите следующий код в объекте "blob", который вы хотите определить динамическим именем файла - если код "параметров" не включен, добавьте его в JSON и нажмите кнопку "Готово" - этот код может понадобиться во "входах", "выходах" или в обоих случаях в зависимости от динамических файлов, на которые вы ссылаетесь в своем потоке - ниже приведен пример, в котором выходные данные включают параметр даты в обоих путь к папке и имя файла (дата задается параметром Trigger):
"inputs": [
{
"referenceName": "tmpDataForImportParticipants",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "StgParticipants",
"type": "DatasetReference",
"parameters": {
"sourceFolderPath": {
"value": <derived value of folder path>,
"type": "Expression"
},
"sourceFileName": {
"value": <derived file name>,
"type": "Expression"
}
}
}
]
Полученное значение пути к папке может быть примерно таким - это приводит к пути к папке yyyy/mm/dd в указанном blobContainer:
"BlobContainer/@{FormatDateTime(трубопровод (). Parameters.windowStart,'YYYY')}/ {@ FormatDateTime(трубопровод (). Parameters.windowStart,'ММ')}/ {@ FormatDateTime(трубопровод (). Parameters.windowStart,'дд')}"
или это может быть жестко закодировано, например, "blobContainer/directoryPath" - не включайте "/" в начале или конце определения
Полученное имя файла может выглядеть примерно так:
"@concat (string (pipe (). параметры.'_',formatDateTime(dataset().WindowStartTime, 'MM-dd-yyyy_hh-mm-ss'))>,'.txt')"
Вы можете включить любой параметр, установленный триггером, например, значение идентификатора, имя учетной записи и т. Д., Включив параметры pipe ().
После настройки действия копирования и выбора набора данных BLOB-объектов в качестве приемника вам нужно ввести значение для WindowStartTime, это может быть либо просто временная метка, например, 1900-01-01T13:00:00Z, либо вы можете вставить параметр трубопровода в это.
Наличие параметра может быть более полезным, если вы настраиваете триггер расписания, поскольку вы сможете ввести эту метку времени WindowStartTime к моменту запуска триггера. Для этого вы должны использовать @trigger (). ScheduleTime в качестве значения для параметра триггера WindowStartTime. https://docs.microsoft.com/en-us/azure/data-factory/concepts-pipeline-execution-triggers
Вы можете добавить параметр набора данных, например WindowStartTime, в формате 2019-01-10T13:50:04.279Z. Тогда у вас будет что-то вроде ниже для динамического имени файла: @concat('file1_', formatDateTime(dataset().WindowStartTime, 'MM-dd-yyyy_hh-mm-ss')).
Для использования в операции копирования вам также необходимо добавить параметр конвейера.