Я работаю над проектом хранилища данных, используя BigQuery. Мы загружаем ежедневные файлы, экспортируемые из различных систем мэйнфреймов. Большинство таблиц имеют уникальные ключи, которые мы можем использовать для создания истории типа 2, но некоторые таблицы, например таблица главной книги / позиций, могут иметь повторяющиеся строки. Эти файлы содержат полную информацию, извлекаемую из исходной системы каждый день.
В настоящее время мы можем поддерживать историю типа 2 для большинства таблиц, не зная первичных ключей, если все строки в загрузке уникальны , но у нас есть проблема с таблицами, где это не так.
Один человек в проекте предложил, что способ справиться с этим - "сравнить дубликаты", что означает, что если таблица DWH имеет 5 идентичных Строки и промежуточные таблицы имеют 6 одинаковых строк, затем мы просто вставляем еще одну, а если все наоборот, просто закрываем одну из записей в таблице DWH (устанавливая дату окончания до настоящего момента). Это может быть реализовано путем добавления дополнительного ключа «sub row» к набору данных следующим образом:
Row_number() over(partition by “all data columns” order by SystemTime) as data_row_nr
Я пытался выяснить, является ли это хорошей практикой или нет, но без какой-либо удачи. Что-то в этом мне просто кажется неправильным, и я не могу понять, какие непредвиденные последствия могут возникнуть из-за этого.
Может кто-нибудь сказать мне, как лучше всего справиться с go при работе с полной нагрузкой? ежедневных данных бухгалтерской книги, для которых мы хотим вести какую-то историю в DWH?