ADF преобразует вывод активности поиска в список

#azure #azure-data-factory

Вопрос:

Я извлекаю действие(«getData»). вывод.значение, и результат :

 '[{"name":"8.0"},{"name":"8.1"},{"name":"7.2"}]'
 

но мне нужно

 "8.0","8.1","7.2"
 

У вас есть какие-нибудь идеи, как конвертировать?
Я пробовал использовать действие ForEach, а затем использовать item().name, но есть ошибка без сообщения.

Комментарии:

1. Вам нужно повторить его или вам нужна объединенная строка? В любом случае, используйте a Для Каждого цикла. Укажите элементы, а затем используйте @item().name в цикле. Используйте действие Добавить переменную внутри цикла, если вам нужно собрать объединенную строку.

2. Внутри цикла у меня есть действие копирования, которое извлекает данные из API (элемент().имя является частью запроса). Зачем добавлять переменную?

3. Используйте Добавление только в том случае, если вам нужно построить строку следующим образом: «8.0»,»8.1″,»7.2″. Если вы просто повторяете, то вам не нужно этого делать, это не было ясно из вашего вопроса.

4. Я использовал переменную добавления, но я получаю : ‘[«8.1″,»8.0″,»7.2»].

5. можете ли вы уточнить, какой тип выходных данных вы пытаетесь построить, это массив значений или одна строка объединенных значений?

Ответ №1:

Если это будет статичным, то вы могли бы просто использовать:

 @replace(replace(replace(replace(string(variables('TestArray')), '{"name":', ''), '}', ''), '[', ''), ']', '')
 

Плюсы: вам не нужно использовать ForEach, особенно если в выходных данных есть сотни потенциальных полей имен.

Минусы: Этот метод является жестким, так что он будет работать только в том случае, если ваши выходные данные всегда будут в этом формате.

Смотрите скриншоты и комментарии ниже: Начальный Вывод
Конечный Результат

Кавычки всегда будут экранированы при просмотре строкового вывода, ADF автоматически экранирует все символы кавычек, но когда переменная/вывод фактически используется, экранированные символы игнорируются. Вот доказательство этого, используя выходные данные в качестве дополнительного столбца для записи выходных данных в столбец БД: Снимок экрана 1 (Дополнительный столбец в приемнике)
Устанавливается дополнительное значение столбца
Снимок экрана 2 (Схема сопоставления)
Сопоставление БД
Снимок экрана 3 (Показывает, что выходные данные не содержат эскейпов в БД)
Вывод из БД

Комментарии:

1. Добавьте дополнительную замену и разделение на основе приведенной выше формулы, чтобы можно было хранить в виде переменной массива @split(заменить(заменить(заменить(заменить(заменить(строка(переменные(‘testArray’))), ‘{«имя»:’, «), ‘}’, «), ‘[‘, «), ‘]’, «),'»‘,»),’,’)

2. Да, я не был уверен, нужна ли оператору строка или массив, но в любом случае это сработает.