Как мне пространственно моделировать эти отношения в хранилище данных в стиле Кимбалла? - PullRequest
0 голосов
/ 11 октября 2010

Итак, в моем хранилище данных есть два измерения:

dim_machine
-------------
machine_key
machine_name
machine_type


dim_tool
------------
tool_key
tool_name
machine_type

Я хочу убедиться, что поле machine_type в обоих измерениях содержит одни и те же данные. Должен ли я создать третье измерение для снежинки между ними или есть другая альтернатива?

Ответы [ 2 ]

3 голосов
/ 11 октября 2010

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

alt text

Бизнес-процесс, который распределяет инструменты, должен знать, какой инструмент может быть установлен на какой машине.Предположим, что на машине каким-то образом установлен неправильный инструмент.Лучше импортировать данные, чтобы соответствовать этому факту, и запустить отчет, который обнаружит ошибку в бизнес-процессе, чем нарушать процесс 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 ;
2 голосов
/ 11 октября 2010

Я не уверен, какую именно проблему вы пытаетесь решить?Это похоже на то, что вы бы просто встроили в процесс ETL: для обоих измерений сопоставьте исходные данные с одним и тем же целевым списком типов машин.Если появится новое значение, которое не имеет сопоставления, выведите ошибку (или установите значение заполнителя по умолчанию и просмотрите данные позже).

Совершенно другим вариантом будет «мини-измерение» (термин Кимбалла)который содержит все возможные комбинации станка и инструмента.Если два измерения тесно связаны и часто используются вместе в поиске, то это может быть полезным способом их объединения и упрощения.Но даже тогда я предполагаю, что вы будете проверять и очищать исходные данные для соответствия типам машин.

...