Я использую поисковые запросы в фабрике данных Azure для обновления только новых данных, но я получаю ошибки и не понимаю, почему

#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:

Вы можете проверить результат действия поиска.

Источник: mssqltips.com/sqlservertip/6185/azure-data-factory-lookup-activity-example/

Вывод 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. Тар работал. спасибо за вашу помощь