Имейте в виду, что хранилище данных является ненормализованной структурой, поэтому обычно данные повторяются в измерениях.Целостность должна быть обеспечена в операционной системе и процессе ETL.Предположим, у нас есть что-то вроде модели ниже.
Бизнес-процесс, который распределяет инструменты, должен знать, какой инструмент может быть установлен на какой машине.Предположим, что на машине каким-то образом установлен неправильный инструмент.Лучше импортировать данные, чтобы соответствовать этому факту, и запустить отчет, который обнаружит ошибку в бизнес-процессе, чем нарушать процесс ETL, потому что типы инструмента и машины не совпадают.запрос (отчет), подобный этому, обнаружит несоответствие и окажется весьма полезным.
select
'tool-machine mismatch' as alarm
, full_date
, machine_name
, machine_type
, tool_name
, matching_machine_type
, employee_full_name
from fact_installed_tools as f
join dim_machine as m on m.machine_key = f.machine_key
join dim_tool as t on t.tool_key = f.installed_tool_key
join dim_date as d on d.date_key = f.date_key
join dim_employee as e on e.employee_key = f.employee_key
where machine_type != matching_machine_type ;