Я наткнулся на этот пост, где ответ не имеет смысла. И вот почему: предложенный ответ рекомендует добавить цикл For
к процессу. Это добавило бы дополнительный цикл к процессу, первым из которых была бы авто-итерация по списку подписчиков. Дополнительный цикл For
будет проходить по всем кодам купонов для каждого подписчика. Не оптимально.
Однако ключевое значение здесь имеет использование функции ClaimRow () , в которой в атрибуте ClaimedDate
автоматически указывается заявленная дата и атрибут IsClaimed
в true
.
Эта функция возвращает одну строку из расширения данных и резервирует значения, чтобы предотвратить их использование другой операцией. Если строка найдена и не востребована, указанному заявленному столбцу присваивается значение true, и возвращаются данные из этой строки. Если в расширении данных нет невостребованных строк, эта функция вернет ошибку. Заявленные строки могут использоваться снова, если назначенный заявленный столбец изменяется на false.
Строка также блокируется во время этого процесса.
Эта функция в основном используется для назначения уникальных кодов купонов аудитории во время отправки и записи других соответствующих данных из контекста отправки.
Использование функции ClaimRow
и адреса электронной почты из исходногоабонентский цикл, мне удалось обновить таблицу купонов:
SET @CouponRow = ClaimRow("CouponsTest2DE", 'IsClaimed', 'SubscriberKey', emailaddr)
, где emailaddr
- адрес электронной почты подписчика из начального итератора списка подписчиков.