2010-09-17 3 views
3

У меня есть таблица фактов под названием «Кредиты». В этой таблице в идентификаторе кредита, дате выдачи кредита и сумме кредита.Datawarehouse Fact table question

Требования к бизнесу Я не совсем знаю, как это сделать в хранилище данных следующее. Сумма кредита может быть скорректирована в будущем. Так что, скажем, 1 августа мы делаем кредит с идентификатором 1 и количеством 20 000. 1 октября этот кредит корректируется до 19 000. Я помещаю две записи в таблицу фактов с тем же идентификатором и разными датами и суммами?

Создать новую таблицу (таблицу размеров) с суммой кредита и датой в ней? Каков наилучший способ сделать этот сценарий?

В производственной базе данных у нас есть таблица для общей суммы кредита, а затем таблица с таковой для loanAmounts, поэтому сочетание заемных средств равно totalLoanAmount.

ответ

0

Независимо от того, требуется ли вам несколько версий, зависит от требований. Вам нужно всего лишь сообщить о сумме займов as-is или вам нужно знать as-was позиция? Если вы не уверены, вероятно, имеет смысл сохранить историю (несколько версий). Мое предположение заключалось в том, чтобы сохранить историю.

Я бы предложил создать новые строки для каждой новой версии и столбца даты, чтобы представить дату (даты), в которой применяется эта версия.

+0

Мне нужно знать оба размера кредита как есть и как было. Но мне также нужно сказать, есть ли один кредит с двумя корректировками суммы кредита, то есть один кредит для целей подсчета. Поэтому я подумывал о том, чтобы сделать таблицу фактов по кредитам и подкатегорию для суммарных сумм кредита. Имеет ли это смысл? – Rjc

+0

В порядке ли ссылка 2 таблицы фактов правильно? – Rjc

1

Рассматривайте LoanID как вырожденное измерение и вводите исправление отдельно. Вы также можете использовать измерение типа транзакции, чтобы описать: кредиты, платежи, корректировка и т.д.

DateKey CustomerKey TransacionTypeKey LoanID Amount 
--------------------------------------------------------- 
20100801 175   1    1  20000.00 
20101001 175   2    1 - 1000.00 

Показать все кредиты по клиентам, по кредиту

select 
     CustomerKey 
    , LoanID 
    , sum(Amount) as Amt 
from factLoan 
group by CustomerKey, LoanID 
order by CustomerKey, LoanID ; 
2

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

M

1

это называется медленно изменения размеров, и это зависит от бизнес-требований, погода или вы не хотите, чтобы сохранить следы изменений, которые произошли в этой строке или нет. Обычно существует 3 типа медленно изменяющихся размеров.

В типе 1 медленно изменяя размер, новая информация просто перезаписывает исходную информацию. Другими словами, история не сохраняется.

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

В типе 3 медленно изменяя размер, будут указаны два столбца, указывающие конкретный атрибут интереса, один из которых указывает исходное значение, и один, указывающий текущее значение. Также будет столбец, указывающий, когда текущее значение становится активным.

вы можете обратиться к руководству kimball для получения дополнительной информации о медленно меняющихся размерах.

0

Как вы говорите, кредит является фактом. Кредиты могут быть скорректированы, что означает, что сумма кредита может быть увеличена или уменьшена. Существует два общих способа:

  1. Вставьте новую строку с дельтам в соответствие с фактом. В этом теперь есть две строки для кредита. Это означает, что первичный ключ для факта Займа не может быть только ID кредита. Он имеет (логически, не обязательно физически) идентификатор загрузки и дату, или идентификатор кредита и номер входа (с датой в качестве другого атрибута). Результат будет таким, как вы заявили. Я бы изменил TransactionTypeKey на TransactionTypeCode, что более правильно именовать.

  2. Обновите факт при помощи нового баланса. В этом случае конечный результат сохраняется, но изменения теряются. Первичный ключ - LoanID; date является атрибутом.

Большинство других приложений, таких как обработка заказов, будет использовать первое решение, которое, как мне кажется, вам нужно. Преимущество решения 1 также заключается в том, что он является полностью аддитивным.

Что касается комментария от Saad El Oualji, это не случай SCD вообще, а подробный дизайн фактов. Его описание SCD является правильным, но SCD ​​описывает изменения размеров, а не изменения фактов.

Смежные вопросы