Динамически добавлять дату и время к имени файла во время копирования или при указании имени в наборе данных BLOB-объектов - PullRequest
0 голосов
/ 08 января 2019

Я сохраняю файл в хранилище BLOB-объектов в фабрике данных V2, когда я указываю место для сохранения, я вызываю файл (например) file1, и он сохраняется в BLOB-файле как file1, нет проблем. Но могу ли я использовать функцию динамического содержимого, чтобы добавить дату и время к имени файла, так что это будет что-то вроде file1_01-07-2019_14-30-00? (7 января 14:30:00 на всякий случай, если его неудобно читать). Кроме того, можно ли вывести результат (имя файла) действия webhook для следующего действия (функции)?

Спасибо.

Ответы [ 3 ]

0 голосов
/ 15 января 2019

После того, как вы настроили операцию копирования и выбрали набор данных BLOB-объектов в качестве приемника, вам нужно ввести значение для WindowStartTime, это может быть либо просто временная метка, например, 1900-01-01T13: 00: 00Z или вы можете указать в этом параметр конвейера. enter image description here

Наличие параметра может быть более полезным, если вы настраиваете триггер расписания, поскольку вы сможете ввести эту метку времени WindowStartTime к моменту запуска триггера. Для этого вы должны использовать @trigger (). ScheduleTime в качестве значения для параметра триггера WindowStartTime. https://docs.microsoft.com/en-us/azure/data-factory/concepts-pipeline-execution-triggers#trigger-type-comparison

0 голосов
/ 07 февраля 2019

Я не мог заставить это работать без непосредственного редактирования 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, 'MM')} / {@ FormatDateTime (трубопровод (). parameters.windowStart, 'дд')} "

или это может быть жестко закодировано, например "blobContainer / directoryPath" - не включать '/' в начале или конце определения

Полученное имя файла может выглядеть примерно так:

"@ concat (строка (pipe (). Параметры .'_ ', formatDateTime (набор данных (). WindowStartTime,' MM-dd-yyyy_hh-mm-ss '))>,'. Txt ')"

Вы можете включить любой параметр, установленный триггером, например, значение идентификатора, имя учетной записи и т. д., включая pipe (). параметры.

Пример параметров динамического набора данных

Пример подключения динамического набора данных

0 голосов
/ 10 января 2019

Вы можете добавить параметр набора данных, такой как WindowStartTime, в формате 2019-01-10T13: 50: 04.279Z. Тогда у вас будет что-то вроде ниже для динамического имени файла: @concat ('file1_', formatDateTime (набор данных (). WindowStartTime, 'MM-dd-ггггг_чч-мм-сс')).

Для использования в операции копирования вам также необходимо добавить параметр конвейера.

...