Я использую функцию Azure, используя код Python, чтобы получить список всех коллекций в Cosmos Db и передать выходные данные в действие For-Each в фабрике данных. Конечной целью является динамическое копирование всех коллекций в другую БД.
Псевдо-скрипт
List1=["col1","col2","col3"]
Json=json.dumps(List1)
return func.HttpsResponse(List1)
Скрипт python работает и успешно возвращает список всех коллекций.
Однако, когда я вызываю функцию через фабрику данных, на выходе появляется строка, а не массив. Для -Каждой активности происходит сбой, поскольку она ожидает Array.
Нужно ли мне изменить скрипт Python или нужно что-то изменить на стороне фабрики данных?
В этой ветке stackoverflow есть что-то похожее, но точного ответа о том, как написать скрипт, нет. текстЕсть ли какие-либо действия в фабрике данных Azure для получения списка коллекций космоса?
Однако, когда я вызываю функцию через фабрику данных, на выходе появляется строка, а не массив. Для -Каждой активности происходит сбой, поскольку она ожидает Array.
Я попробовал код ниже в своей среде и получил тот же результат в типе String.
List1=["col1","col2","col3"]
Json=json.dumps(List1)
return func.HttpResponse(Json)
Нужно ли мне изменить скрипт Python или нужно что-то изменить на стороне фабрики данных?
Чтобы использовать приведенный выше ответ в ForEach, вам нужно преобразовать его в массив. Для этого используйте функцию json()
.
Здесь для примера я преобразовал строковый ответ от действия функции Azure в переменную массива, используя приведенное ниже выражение. Вы можете использовать его в выражении ForEach.
@json(activity('Azure Function1').output.Response)
Вывод в виде массива: