Как настроить выходной путь при копировании данных из Azure Cosmos DB в ADLS Gen 2 через фабрику данных Azure

У меня есть коллекция cosmos DB в следующем формате:

{
    "deviceid": "xxx",
    "partitionKey": "key1",
    .....
    "_ts": 1544583745
}

Я использую фабрику данных Azure для копирования данных из Cosmos DB в ADLS Gen 2. Если я копирую с помощью действия копирования, это довольно просто. Однако меня больше всего беспокоит путь вывода в ADLS Gen 2. В наших требованиях указано, что путь вывода должен быть в определенном формате. Вот пример требования:

outerfolder/version/code/deviceid/year/month/day

Теперь, поскольку deviceid, year, month, day находятся в самой полезной нагрузке, я не могу найти способ их использовать, кроме как создать действие поиска и использовать вывод активности поиска в действии копирования.

введите описание изображения здесь

И вот как я установил папку вывода, используя свойство набора данных:

введите описание изображения здесь

Я использую SQL API в Cosmos DB для запроса данных.

Есть ли лучший способ добиться этого?


person MAK    schedule 11.07.2019    source источник


Ответы (1)


Я думаю, что ваш способ работает, но он не самый чистый. Я бы создал внутри конвейера отдельную переменную для каждого из них: версия, код, идентификатор устройства и т. Д. Затем, после поиска, вы можете назначить переменные и, наконец, выполнить действие копирования, ссылаясь на переменные конвейера.

Предлагаемый конвейер

Это может показаться излишним, но подумайте о том, что кому-то (или вам через 2 года) придется изменить конвейер, и если вас нет рядом (или вы забыли), этот способ проясняет, как он работает, и что вам следует изменить. .

Надеюсь, это помогло !!

person Martin Esteban Zurita    schedule 11.07.2019
comment
Спасибо за это. Но всякий раз, когда я использую заданную активность переменных под именами под переменными, в раскрывающемся списке ничего нет. Как я могу это установить? - person MAK; 12.07.2019
comment
Перед использованием заданной переменной необходимо создать переменные в конвейере. Просто щелкните за пределами любого действия и создайте переменные в конвейере. - person Martin Esteban Zurita; 12.07.2019
comment
Я также хотел спросить, есть ли способ избежать использования действия поиска и получить переменные из самого действия копирования. Исходный запрос использует SQL API и содержит данные. Могу я как-то использовать это напрямую? - person MAK; 12.07.2019
comment
Я не думаю, что вы можете избежать поиска :( возможно, с помощью чего-то внешнего и передачи параметров в конвейер, но вы, тем не менее, попадете в API. - person Martin Esteban Zurita; 12.07.2019