#azure-data-factory
Вопрос:
Я использую фабрику данных Azure для копирования данных из одной базы данных Azure в другую базу данных Azure, но я хочу копировать только новые данные. Поэтому я использую поисковые запросы для достижения этой цели. LookupOld — это целевая база данных, которую необходимо обновить, LookupNew-это исходная база данных. Обе таблицы имеют одинаковые столбцы. Уникальный идентификатор-идентификатор reportline_id, у LookupOld есть идентификатор reportline_id от 1 до 80, а у lookupNew-идентификатор reportline_id от 1 до 157, поэтому мне нужно скопировать идентификатор reportline_id от 81 до 157 из моего источника в пункт назначения.
Я использую следующий запрос для копирования данных: Выберите * из dbo.report_line, где reportline_id > ‘@{activity(‘lookupOld’).output.reportline_id}’
Но когда я запускаю отладку, я получаю следующую ошибку, и я не могу понять, что я делаю неправильно.
Я просмотрел данные по всем этапам, и все выглядит нормально. Это мой первый день использования ADF, и я был бы очень благодарен за некоторую помощь.
Ответ №1:
Вы можете проверить результат действия поиска.
Вывод JSON отличается от вашего выражения, вероятно, вам не хватает значения. Так что это должно выглядеть примерно так:
@concat('Select * from dbo.report_line where reportline_id > ', activity('lookupOld').output.value.reportline_id)
Комментарии:
1. спасибо за вашу помощь. Я понял, что не назвал столбец reportline_id, так как у меня был максимальный расчет. Я обновил это, а также изменил выражение, включив в него значение, но теперь я получаю еще одну ошибку. «Выражение» активность («Поиск»). вывод.значение.reportline_id «не может быть оценено, поскольку свойство «reportline_id» не может быть выбрано. Элементы массива могут быть выбраны только с использованием целочисленного индекса.»
2. Да, это потому, что несколько элементов (могут быть/есть) возвращены, и ваше выражение исключает только одну запись. Вы можете выбрать опцию firstRow или выбрать первое значение, возвращаемое запросом, используя действие(‘LookupOld’).output.value.reportline_id[0]. [0] выбирает первое значение массива, массивы начинаются с нулевого значения.
3. Тар работал. спасибо за вашу помощь