Как мне управлять личностями с ETL? - PullRequest
1 голос
/ 06 марта 2009

Мне нужна помощь в определении рабочего процесса, и я не знаю, как это сделать ... Допустим, я преобразую (ETL?) Данные из таблицы A в таблицу B. В таблице A есть составной первичный ключ A .a + A.b + Ac, в то время как таблица B содержит только автоматически заполненный столбец идентификаторов. Как я могу сопоставить составные ключи от A обратно до идентичностей, созданных при вставке в B?

Желательно, чтобы в таблице B не было столбцов, относящихся к составному ключу A, поскольку существует много других таблиц, которым необходимо выполнить ту же операцию, но не иметь такой же структуры составного ключа.

Ответы [ 2 ]

3 голосов
/ 06 марта 2009

Если я вас правильно понимаю, вы не можете связать записи из таблицы B с записями таблицы A после преобразования, если только вы не каким-то образом захватите отображение между составным ключом A и идентификатором B. Во время преобразования.

Вы можете добавить столбец в A и предварительно вычислить идентификаторы, которые будут использоваться при вставке в B. Тогда у вас будет отображение. Это также можно сделать с помощью отдельной таблицы сопоставления, если вы не хотите добавлять столбец в A.

Если вы не хотите переопределять присвоение идентификаторов по умолчанию, вам придется захватывать их во время загрузки. Для этой цели Oracle предоставляет предложение returning для insert в PL / SQL. Я не уверен насчет SQL Server. Этого также можно достичь, используя триггер на B для вставки в отдельную таблицу сопоставлений или обновления столбца в A. Хотя это может значительно замедлить вашу загрузку.

Если ничего другого, вы можете создать дополнительные столбцы в B для хранения ключей A во время загрузки, затем запросить сопоставления в отдельной таблице, а затем отбросить дополнительные столбцы.

Надеюсь, это поможет.

1 голос
/ 07 марта 2009

Спросите себя, для чего вам нужны оригинальные ключи. Ответ может варьироваться в зависимости от исходной системы. Это может привести к тому, что вы будете поддерживать столбец «исходная система» и столбец «исходные ключи». Возможно, последним должен быть список оригинальных ключей, разделенных запятыми.

Или вы можете обнаружить, что на самом деле вам никогда не нужно возвращаться, поэтому не нужно ничего хранить.

...