У меня есть таблица, которая выглядит следующим образом:
product | eff_dt | store | region | type
12345 | 18/05/2017 | HA | CA | F
12345 | 05/10/2018 | K1 | CA | F
12345 | 01/02/2019 | K1 | CA | F
Требуется упорядочить записи (partition by product_id
) и сравнить столбцы в каждой записи со столбцами next запись в последовательности. Если изменение найдено, то CREATE a новая запись между этими 2 записями с eff_date = [eff_date (of the 2nd record) - 1 day]
, так что теперь у нас будет 3 записи. Сгенерированная новая запись наследует значения столбцов родительской записи. Однако, если в записи не найдено никаких изменений по сравнению с ее предыдущей записью, нам нужно игнорировать эту запись и не выводить ее.
Ожидаемый результат:
product | eff_dt | store | region | type
12345 | 18/05/2017 | HA | CA | F <--- output
12345 | 04/10/2017 | HA | CA | F <--- new record generated with (eff_dt - 1)
12345 | 05/10/2018 | K1 | CA | F <--- output as-is
<--- 3rd record discarded since no change with previous record
Следовательно, из приведенного выше примера мы начнем со сравнения 1-й и 2-й записей и находим разницу (HA!=K1)
. Следовательно, новая запись должна быть сгенерирована между этими двумя записями. Теперь, сравнивая 2-ю и 3-ю записи, мы не обнаруживаем никаких изменений в значениях столбца. Следовательно, не нужно создавать новую запись, а также эта запись отбрасывается и исключается из выходных данных.
Сравнение может быть выполнено путем генерации хеша MD5 () путем объединения столбцов каждой записи. Удержание промежуточных результатов во временных представлениях разрешено.
Я пытаюсь найти способ генерировать такие записи и соответственно заполнять столбцы.
Любая помощь приветствуется.