Итак, мне кажется, я понял, что указывать в измерениях, в таблице фактов и как этого добиться.Теперь у меня возникла проблема, что у меня есть это измерение «продукт» и измерение «productProperties».Я должен был разделить это, потому что иначе мой естественный ключ в «продукте» не был бы уникальным.Я задал этот вопрос в этом вопросе .
Так что моя таблица измерений productProperties должна была выглядеть так: Color |Материал |Размер
1.) Чтобы достичь этого, мне нужно было создать всевозможную перестановку значений «цвет», «материал», «размер» и т. Д., Верно?
Это будетбыло более 200 миллионов строк, поэтому я решил разделить это.Теперь у меня есть измерение «Цвет», которое на самом деле состоит из столбцов «цвет», «colorFront», «colorBack».
2.) Это нормально, я думаю, но как насчет измерения 'size', которое состоит только из столбцов 'surrogate_key' и 'value'?
Я читал о«вырожденные измерения» (в рекомендации по чтению, приведенной в моем другом вопросе), что означает создание «одного столбца измерений» одним столбцом в таблице фактовЭто кажется мне непрактичным, так как в моей таблице фактов у меня будет 5-6 дополнительных столбцов.
Что если я должен сделать это?
3.) Являются ли эти вырожденные измерения частью первичного ключа в таблице фактов?
Самый важный вопрос: в моей таблице фактов будут записи с продуктами, которые не соответствуют каждомуколонка в моих измерениях или не все размеры вообще.Это означает, что у меня может быть запись / product, которая имеет свойство 'color', но не 'colorFront' или 'colorBack'.Так как я создал каждую перестановку «color», «colorFront» и «colorBack», при попытке заполнить таблицу фактов я получу несколько суррогатных ключей, если продукт имеет только свойство «color», что приводит к появлению дубликатов в моемтаблица фактов, верно?
4.) Так нужно ли отфильтровывать эти дубликаты при запросе моей таблицы фактов?Или это вообще неправильно?
Я, конечно, мог бы разделить измерение «цвет» на три измерения.Но тогда я получу записи со значениями NULL в некоторых столбцах.То же самое и с записями / продуктами, которые вообще не используют некоторые измерения.
5.) Как обрабатывать эти значения NULL?
Заранее спасибо за любую помощь.