У меня есть поток данных, который читает записи из API. Затем он вставляет эти записи в базу данных SQL Azure в таблице. Проблема в том, что исходные данные не имеют первичного ключа. В исходных данных действительно есть идентичные записи, которые действительны. Я не хочу вставлять двойные записи. Я не хочу делать полную загрузку каждый раз, когда заполняю эту таблицу. Итак, идея состоит в том, чтобы получить данные за последний день из источника, удалить данные за последний день в целевой таблице и затем вставить данные из источника. Поскольку источник довольно медленный, если я удалю данные перед запуском потока данных, мои клиенты будут с неполными данными в течение нескольких минут до 20 минут. Я хочу, чтобы время между удалением и записью данных было как можно короче. Вот почему я думаю об использовании задачи сценария в потоке данных после чтения из источника и перед записью в целевую таблицу.
Задача сценария будет удалять записи из места назначения таблица, основанная на двух переменных: 1 для даты для выбора записей для удаления и одна для определения того, какая это будет schema.table.
Все это контролируется переменными. user::delete_date
- это дата и время. user::schema_table
- это schema_name таблицы, из которой нужно удалить записи. Имя таблицы всегда одно и то же, но схема различается. meta_inserted_date
- это поле в целевой таблице типа datetime2
Итак, инструкция, которую я хочу, чтобы задача скрипта выполнялась, следующая:
DELETE FROM user::schema_table WHERE meta_inserted_date >= user::delete_date
Поскольку я хочу, чтобы это выполнялось в поток данных Я не могу использовать задачу «Выполнить SQL». Единственный способ выполнить SQL в потоке данных - использовать задачу Script. Я понимаю сценарии, могу их адаптировать, но писать - другое дело… Помогите, пожалуйста?