Таблица загружается каждую ночь с некоторыми данными (около 100К строк). Затем мое пакетное задание считывает каждую запись из таблицы и обрабатывает ее. Мое требование состоит в том, чтобы обрабатывать только те записи, которые имеют изменения в указанных столбцах c, поскольку нет смысла обрабатывать новую запись, если она не имеет каких-либо изменений по сравнению со вчерашней записью (и это излишне задерживает всю обработку задания).
Предположим, что ниже структура таблицы
Имя таблицы: STAGING_T
Имена столбцов: PK_1 | COL1 | COL2 | COL3 | COL4 | CREATE_DATE | FLAG
CREATE_DATE - это системная дата при загрузке данных в эту таблицу. Это используется для определения данных за день, загруженных в эту таблицу.
- Если строка присутствует в сегодняшних данных, но не во вчерашних (за предыдущий день), обновите FLAG до 'INSERT'
- Если строка присутствует во вчерашних данных, но не в сегодняшних, обновите FLAG на «DELETE»
- Если строка присутствует как в сегодняшних, так и во вчерашних данных и есть какие-либо изменения в COL3 и COL4 обеих записей , обновите FLAG до 'ОБНОВЛЕНИЕ'.
- Если в сегодняшних и вчерашних данных есть строка и в COL3 и COL4 обеих записей НЕТ никаких изменений , измените ФЛАГ на «НЕТ ИЗМЕНЕНИЯ».
Общие столбцы, по которым я идентифицирую одни и те же записи вчера и сегодня: COL1 и COL2.
**Sample Data**
PK_1 COL1 COL2 COL3 COL4 CREATE_DATE FLAG
1 1000 2000 a x 31.01.2019
2 1000 2001 b y 31.01.2019
3 1000 2002 c z 31.01.2019
4 1000 2000 aa x 30.01.2019
5 1000 2001 b y 30.01.2019
6 1000 2003 d z 30.01.2019
**Expected Output**
PK_1 COL1 COL2 COL3 COL4 CREATE_DATE FLAG
1 1000 2000 a x 31.01.2019 UPDATE
2 1000 2001 b y 31.01.2019 NO CHANGE
3 1000 2002 c z 31.01.2019 INSERT
4 1000 2000 aa x 30.01.2019
5 1000 2001 b y 30.01.2019
6 1000 2003 d z 30.01.2019
Любые помощь или предложения будут отличными. Спасибо.