Как скопировать файлы в разные каталоги на основе имени файла в ADFv2 - PullRequest
1 голос
/ 17 июня 2019

Я пытаюсь скопировать файлы в какую-то папку в ADLS.Здесь я пытаюсь скопировать на основе имени файла.Здесь мой источник и назначение только ADLS.

Например.

    If filename is ABC.csv then copy to ABC folder

    If filename is DEF.csv then copy to DEF folder

    If filename is XYZ.csv then copy to XYZ folder and so on.

Пожалуйста, помогите мне достичь этого с помощью фабрики данных Azure v2.

Я знаю, что это простая задача в SSIS.Но в ADFv2 я попытался использовать цикл Foreach для итерации по всем файлам (у меня есть только 3 файла), и внутри цикла foreach есть условие IF для проверки имени файла.Не уверен, как изменить местоположение папки назначения во время выполнения.

Ответы [ 2 ]

1 голос
/ 18 июня 2019

Этого можно добиться, используя динамический контент в пути к файлу приемника.Поэтому вместо использования логики if-then-else для определения целевой папки динамически создайте ее в зависимости от имени файла.

В следующем примере целевая папка создается динамически с временем запуска триггера:

 "folder": {
        "name": "Target"
    },
    "type": "AzureDataLakeStoreFile",
    "typeProperties": {
        "fileName": "",
        "folderPath": {
            "value": "@CONCAT('/tenant02/data/raw/corporate/hmaserver/Ingest_Date=', formatDateTime(trigger().startTime, 'yyyy-MM-dd/'))",
            "type": "Expression"
        }

В интерфейсе Data Factory V2 отредактируйте набор данных приемника, чтобы сделать это:

ADF Sink Dataset

Добавить динамическое содержимое в соединение:

Dynamic Content for sink

Вы можете сделать это аналогично, например, заменив расширение файла:

@replace(item().name, '.csv', '')

Другим вариантом может быть использование действия Databricks.за это.См. Мой следующий Ответ для сложной логики копирования в Python Notebook.

0 голосов
/ 20 июня 2019

Вы можете использовать Если действие условия в фабрике данных Azure, как показано ниже:

Определите If Condition, чтобы проверить, является ли имя файла ABC.

  • Если true, определите действие, чтобы скопировать его в папку ABC.
  • Если false, вставьте внутрь ifFalseActivities еще один If Condition, чтобы проверить, является ли имя файла DEF, затем запишите действие для копирования файла в папку назначения на основе результата этого действия.

Если вы можете определить destination folder на основе имени файла, прежде чем передать данные в ADF (например, вы определяете file name, destination folder, возвращаемый из stored procedure), то внутри Операция поиска , выможет использовать динамический контент для File path и file name.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...