#azure #nosql #azure-table-storage #lookup-tables #azure-data-factory-2
#azure #nosql #azure-table-storage #подстановочные таблицы #azure-data-factory
Вопрос:
У меня есть таблица водяных знаков SQL, которая содержит последнюю дату в моей целевой таблице
Мои исходные данные поступают из таблицы хранилища Azure, а дата и время — это строка
Я настроил дату и время в таблице водяных знаков в соответствии с форматом в хранилище таблиц Azure
Я создаю задачу поиска и копирования
Если я жестко закодирую дату в запросе для источника и запущу, это отлично сработает createdAt ge ‘2019-03-06T14:03:11.000Z’
Но, очевидно, я не хочу жестко кодировать это значение. Я хочу использовать дату из подстановки
Но когда я заменяю жестко заданную дату значением подстановки
Созданный в ge ‘activity(‘LookupWatermarkOld’).output’
Я получаю сообщение об ошибке
{
«ErrorCode»: «2200»,
«message»: «ErrorCode=FailedStorageOperation», Тип=Microsoft.dataTransfer.Common.Общий.Исключение HybridDeliveryException, сообщение = Сбой операции хранения со следующей ошибкой ‘Удаленный сервер вернул ошибку: (400) неверный запрос.’.,Источник =, «Тип =Microsoft.WindowsAzure.Хранение.Исключение StorageException, Сообщение = Удаленный сервер вернул ошибку: (400) Неверный запрос., Источник = Microsoft.WindowsAzure.Хранилище, StorageExtendedMessage=Синтаксическая ошибка в позиции 42 в операции ‘createdAt ge'(‘LookupWatermarkOld’).output».nRequestId:8c65ced9-b002-0051-79d9-d41d49000000nTime:2019-03-07T11:35:39.0640233Z,,»Type=System.Net.WebException,Message= Удаленный сервер вернул ошибку: (400) Неверный запрос., Источник = Microsoft.WindowsAzure.Хранилище,'»,
«failureType»: «Ошибка пользователя»,
«target»: «CopyMentions»
}
Кто-нибудь может мне помочь с этим? Как вы используете значение подстановки в запросе таблицы Azure?
Ответ №1:
проверьте это:
1) Действие подстановки. Поле запроса:
ВЫБЕРИТЕ MAX (имя_сумки водяного знака) в качестве последнего идентификатора ИЗ TableName;
Кроме того, убедитесь, что вы выбрали опцию «Только первая строка».
2) При копировании данных используйте действие query. Поле запроса:
@concat(‘ВЫБЕРИТЕ * ИЗ имени таблицы как s, ГДЕ s.Имя_коллектива водяного знака > «‘, activity(‘LookupActivity’).output.firstRow.lastID, «»)
Комментарии:
1. Я изменился на @concat (‘ВЫБЕРИТЕ значение водяного знака ИЗ промежуточного. таблица водяных знаков как s, ГДЕ значение водяного знака НЕ РАВНО NULL И s.Значение водяного знака> «‘, activity(‘LookupWatermarkOld’).output, «») но я все еще получаю ошибки
2. Неверный запрос., Источник = Microsoft. WindowsAzure. Хранилище, StorageExtendedMessage=Синтаксическая ошибка в позиции 21 в ‘ВЫБЕРИТЕ значение водяного знака ИЗ промежуточного. таблица водяных знаков как s, ГДЕ s. Значение водяного знака > ‘{«firstRow»:{«Значение водяного знака»: «2019-03-08T12:03:55.000Z»}, «Effective integrationruntime»: «DefaultIntegrationRuntime (Запад Europe)»}».nRequestId:2dc1c57f-8002-00bc-0ccb-d514cd000000nTime:2019-03-08T16:25:07.6841634Z,,»Type=System.Net.WebException,
3. Это потому, что фактическая исходная таблица является таблицей хранилища Azure, потому что, похоже, она выдает ошибку непосредственно перед From? Я попытался изменить его на * вместо использования имени столбца, но сразу после этого выдает ошибку *
Ответ №2:
Наконец-то я получил некоторую помощь по этому вопросу, и это работает с
Создано с помощью gt ‘@{activity(‘LookupWatermarkOld’).output.firstRow.Значение водяного знака}’
значение Waterark — это имя столбца из таблицы подстановки SQL
Подстановка создает массив, поэтому вам нужно указать firstRow из этого массива
И завершает » таким образом, оно используется как строковое значение
Ответ №3:
—Для недавнего ADFv2
Используйте водяной знак / значение подстановки / выходное значение в параметре.
Пример: ParamUserCount = @{activity('LookupActivity').output.count}
или для функции вывода
и вы можете использовать его в запросе как
Пример: "select * from userDetails where usercount = {$ParamUserCount}"
убедитесь, что вы заключили запрос в » » для установки в качестве строки, а параметр в запросе должен быть заключен в {}