Обновляемые / удаляемые строки таблицы фактов - PullRequest
1 голос
/ 22 декабря 2019

AFAIK, лучшие практики говорят, что вы никогда не должны обновлять строки таблицы фактов, по крайней мере, для транзакций и периодических зерновых снимков. Читая о суррогатном ключе таблицы фактов , обнаружил понятие обновлений:

Некоторые методы ETL для обновления строк фактов возможны только в том случае, если суррогатный ключ назначен для строк фактов. В частности, один из способов загрузки обновлений в строки фактов состоит в том, чтобы вставить строки, подлежащие обновлению, как новые строки, а затем удалить исходные строки в качестве второго шага в качестве одной транзакции. Преимущества этого метода с точки зрения ETL - это улучшенная производительность нагрузки, улучшенные возможности восстановления и улучшенные возможности аудита. Суррогатный ключ для строк таблицы фактов необходим, поскольку между старой и новой версиями обновленных строк фактов часто существует несколько идентичных первичных ключей между временем вставки обновленной строки и удалением старой строки.

Боб Беккер имел в виду обновления / удаления из таблицы фактов? Это обычная практика?

1 Ответ

1 голос
/ 22 декабря 2019

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

Не уверен, как суррогатный ключ может помочь здесь - вы должны найти строки, которые нужно изменить, основываясь на естественных ключах.

Но да, INSERT и DELETE (возможно только логическое удаление с установкой флага отмены) может быть предпочтительнее простого UPDATE в основном из соображений аудита и восстановления. Опять же, я не уверен, как это может повлиять на производительность.

Прежде всего, лучшая практика 2006 года не обязательно должна быть текущей лучшей практикой - в настоящее время нетривиальные таблицы фактов обычно неиметь первичный ключ в качестве уникального индекса, что усложняет концепцию окна скользящего раздела. (При необходимости уникальность проверяется в процессе ETL).

...