2013-07-16 7 views
-3

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

процесс ETL выглядит следующим образом: данные 1 Передача продукта из первой таблицы stgProducts базы данных OLTP данные 2 Merg продукта от стола к столу stgProducts dimProducts - если продукт изменен записи обновляются, когда появляются новые продукты, которые добавляются к новым записям. 3 Перенос данных о товарах из другой базы данных Таблица OLTP stgProducts 4 Данные по продуктам из таблицы в таблицу stgProducts dimProducts - если продукт изменен, записи обновляются, когда появляются новые продукты, которые добавляются к новым записям.

Аналогичным образом передача осуществляется по данным продаж.

Если у меня есть одна таблица с продуктами, как мне подключиться к данным о продажах из двух разных баз данных?

Говоря о двух базах данных, я имею в виду две разные системы ERP. Один управляет онлайновыми продажами, другой - другими продажами. SKU продукта тот же, но идентификатор продукта отличается для каждой системы.

+0

Процесс ETL должен нормализовать/отобразить идентификационные ключи продукта в единую таблицу продуктов на складе. Это ** ** работа процесса ETL. – PaulProgrammer

ответ

0

Предполагая, что вы используете звездообразную схему (не всегда лучший подход, BTW), ваша таблица размеров продукта должна иметь ключ, уникальный для DW. Таким образом, SKU 186 может иметь DW-специфический ключ 1 и SKU 294 может иметь DW-специфический ключ 2. Ваша таблица фактов, в которой хранятся записи транзакций (записи продаж?), Будет содержать составной ключ, состоящий из нескольких столбцы внешнего ключа (например, product_key, date_key, location_key и т. д.).

Этот внешний ключ к таблице продуктов в этом случае относится к DW-специфическому ключу продукта, а не к исходной системе SKU.

ETL, чтобы заполнить вашу таблицу фактов должны «перевести» исходный ключ системного продукта в DW-конкретный ключ продукта, как вы приносите данные в

ПРИМЕЧАНИЯ. Это общий подход к заполнению таблицы фактов. Могут быть варианты, основанные на конкретных требованиях.

0

Расширяющиеся Bens немного согласны с предостережением, что нет правильного ответа на хранилище данных - это экспансивная, облачная область ИТ с большим количеством школ мысли. Вот одно из возможных направлений, которым вы можете преследовать.

Предположения: 1) У вас есть две отдельные исходные базы данных как с двумя таблицами: Продукт и продажи 2) Отдельная база данных источника isloated и может иметь конфликтующие данные первичного ключа. 3) Вы хотите, чтобы версия [1] отображалась как в продуктах, так и в таблицах продаж. Это важное предположение, поскольку в основном таблицы фактов не обновляются, и таблица продаж звучит так, как будто она принадлежит к таблице статических фактов.Ваш вопрос неясен, если вы ожидаете изменений в продажах, поэтому я предполагаю, что вы будете 4) В отчете о продажах может быть только один продукт (это маловероятно, но на ваш вопрос упоминается только 2 таблицы, 1-многим будет включать в себя более тонкой настройки вокруг стола мостиком)

Склад Дизайн:

Вам потребуется 3 таблицы со следующими столбцами:

PRODUCT_DIM

  • PRODUCT_SK (суррогатного первичного ключ базы данных хранилища данных генерируется)
  • SOURCE_SYSTEM_ID (специфический индикатор DW, какой исходной базы данных OLTP записи был получен из - может быть строка, если вам нравится)
  • PRODUCT_NK (PK из продукт от исходной системы, используемой для операций SCD)
  • DATE_FROM (Запись активна с)
  • DATE_TO (Запись активна в нуль (для тока))
  • PRODUCT_NAME (название продукта для исходной таблицы)
  • Другие столбцы (Любые другие столбцы продукции вам может понадобиться)

ПРОДАЖ DIM - SALES_SK (суррогатного первичного ключа хранилища данных сгенерировано с помощью базы данных) - SOURCE_SYSTEM_ID (конкретный индикатор DW, в отношении которого исходная база данных OLTP выводилась из источника - может быть строкой, если хотите) - SALES_NK (ПК записи продаж от исходной системы, используемой для операций SCD) - DATE_FROM (Запись активна с) - DATE_TO (Запись активна к (нуль для тока)) - SALE_AMOUNT (имя продукта для исходной таблицы) - Другие столбцы (Любые другие торговые столбцы, которые могут потребоваться)

PRODUCT_SALES_BRIDGE - PRODUCT_SK (составной первичный ключ) - SALES_SK (составной первичный ключ) - DATE_FROM (Запись активна с) - DATE_TO (запись активна в (нулевое значение для тока))

Основные вещи, чтобы обратите внимание на идентификаторы в тусклых таблицах SALES и PRODUCT.

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

Поскольку вы заявили, что у вас несколько исходных систем, необходим дополнительный столбец SOURCE_SYSTEM_ID, чтобы вы могли сопоставлять записи из нескольких исходных систем с их эквивалентной записью на вашем складе. В противном случае у вас может быть продукт EGGS с идентификатором 13 в вашей первой исходной системе и продукт под названием MILK с идентификатором, также равным 13 во второй системе. Без дополнительной SOURCE_SYSTEM_ID вы будете навсегда резки записи для PRODUCT_DIM естественного ключа 13. Это будет выглядеть Somthing как это на вашем складе:

PRODUCT_SK SOURCE_SYSTEM_ID PRODUCT_NK .. PRODUCT_NAME 
.. 
14    1   13   .. EGGS    
15    2   13   .. MILK 
.. 

существует таблица моста, чтобы предотвратить вырубку новых ПРОДАЖ или PRODUCT записи каждый раз, когда их связанный запись изменений. Рассмотрим продажу 10 $ с красными яйцами. Следующие данные, продукт Red Eggs переименовываются в «Супер красные яйца». Это приведет к появлению новой записи о запасах для красных яблок на складе. Если таблица SALES включала прямую ссылку на PRODUCT_SK, новая запись SALES была бы разрезана исключительно потому, что для наших красных яблок появился новый продукт SK. Стол моста перемещает ссылочную целостность, вызванную резкой новой записи из таблицы DIMENSION/FACT в таблицу моста. Это также добавило преимущества для новых пользователей в хранилище данных, которые прекрасно понимают, что они работают с другим мышлением с традиционной РСУБД.

2 столбца Natural Key должны помочь вам решить свой первоначальный вопрос, таблица моста является только личным предпочтением и добавлена ​​для полноты. Если у вас есть дизайн DW, который уже работает для вас, придерживайтесь его.

[1] Иной вариант использования означает, что вы медленно меняете методологию измерения. Большинство людей дешево и просто Type2 все их таблицы «на всякий случай»

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