|
|
|
как подобное смоделировать правильно
|
|||
|---|---|---|---|
|
#18+
Есть сущности Client, Contract. - какждый клиент имеет несколько контрактов для различных продуктов - каждый контракт имеет период действия: start_date, end_date, а также ряд коэффициэнтов, например c1 и c2 - есть транзакционные данные связанные с датой и клиентом, на их основе и на основе коэффициентов контракта валидного на дату транзакции надо что нибудь считать, например меру m = v * c1 - v * c2, где v - мера из таблицы фактов, а с1, с2 - коэффициенты из контракта. Не могу понять как лучше такое смоделировать. Есть такая идея: Dim Date (id_date, ...) Dim Client (id_client, client_name) Dim Contract (id_contract, contract_name, id_product) Fact Contract Validity (id_date, id_client, id_contract, c1, c2, c3) - где c1, c2, c3 это коэффициенты валидные на дату date, т. е. диапазон start_date, end_date раскрывается в список дат попадающих в этот диапазон. Это bridge таблица между Dim Client и Dim Contract Fact Some Data(id_date, id_client, id_product, m1, m2, m3) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 12:11 |
|
||
|
как подобное смоделировать правильно
|
|||
|---|---|---|---|
|
#18+
основной вопрос - что делать с интервалом валидности контракта и стоит ли его раскрывать в таблицу фактов или как-то проще можно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 12:13 |
|
||
|
как подобное смоделировать правильно
|
|||
|---|---|---|---|
|
#18+
почитай про scd2 и сделай контракт scd2. можно в принципе и вынести шапку контракта в отдельный dim с scd1. Но генерить ежедневные состояния это абсолютно излишнее. Прекрасно работает функция between для джоина факта на нужную версию контракта ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 12:18 |
|
||
|
как подобное смоделировать правильно
|
|||
|---|---|---|---|
|
#18+
Ivan Durak, спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 12:23 |
|
||
|
как подобное смоделировать правильно
|
|||
|---|---|---|---|
|
#18+
churupahaIvan Durak, спасибо используй 2 даты start_date, end_date. Не используй null значения для них - и between взлетит из коробки. Даже проиндексировать можно будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 12:26 |
|
||
|
как подобное смоделировать правильно
|
|||
|---|---|---|---|
|
#18+
Ivan Durak, начал пилить обложился книжками many2manyrevolution и всякими примерами реализации SCD2 и чую не до конца я понял, о чем вы говорите. не могу сообразить как мне формулы для метрик в таком случае писать CREATE MEASURE CURRENTCUBE.[Measures].MyMeasure AS [Measures].M * (как по Dim Date выдрать коэффициенты из дименшна Dim Contract, проверив попадание между Start Date и End Date) Можете пример на пальцах выделенного? Хочется научиться делать такое правильно и максимально просто. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2018, 16:00 |
|
||
|
как подобное смоделировать правильно
|
|||
|---|---|---|---|
|
#18+
churupaha, вы для начала погоняйте станд. куб Adv Works Сдается мне там есть половина овтетов на ваши вопросы. взяли куб - задеплоили как есть - потом проект открыли и стали править чуть под себя А ссылок по M2M полно http://www.jamesserra.com/archive/2011/11/many-to-many-dimensions/ The_Many-to-Many_Revolution_2.0.pdf очень ТОЛКОВАЯ вещь - я так понимаю вы уже нашли Many2Many_2.0_Demo.zip - так качните я постатьве себе для экспериментов я честно осилил только 1-е 2 модели - думаю и вам их хватит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2018, 20:46 |
|
||
|
|

start [/forum/topic.php?fid=49&msg=39628980&tid=1857910]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
164ms |
get topic data: |
15ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 14ms |
| total: | 281ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...