Наиболее успешная практика для заполнения Таблиц фактов и Таблиц измерений от Транзакционного Плоского DB

Я хочу заполнить схему "звезда" / куб в SSIS / SSAS.

Я подготовил все свои таблицы измерений и свою таблицу фактов, первичные ключи и т.д.

Источник является 'плоским' (уровень объекта), таблица и моя проблема теперь, как разделить его и получить его от одного в соответствующие таблицы.

Я сделал маленький поиск с помощью Google, но не мог найти удовлетворяющее решение проблемы. Можно было бы предположить, что это - довольно типичная проблема / ситуация в разработке BI?!

Спасибо, alexl

5
задан alex25 21 March 2010 в 17:38
поделиться

2 ответа

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

Допустим, в вашей таблице элементов есть следующие столбцы: id, cat1, cat2, cat3, cat4, ... Предполагая, что категории 1–4 имеют столбцы id, cat_name , вы можете загрузить dim_cat1 (таблицу измерений категории элементов 1) следующим образом:

insert into dim_cat1 (cat_name)
  select distinct cat1 from item_table;

Вы можете сделать то же самое для всех других категорий / таблицы размеров. Я предполагаю, что ваши таблицы измерений автоматически сгенерировали идентификаторы. Теперь, чтобы загрузить таблицу фактов:

insert into fact_table (id, cat1_id, cat2_id, cat3_id, cat4_id, ...)
  select id, dc1.id
    from item_table it
      join dim_cat1 dc1 on dc1.cat_name = it.cat1
      join dim_cat2 dc2 on dc2.cat_name = it.cat2
      join dim_cat3 dc3 on dc3.cat_name = it.cat3
      join dim_cat4 dc3 on dc4.cat_name = it.cat4
 ...

Если у вас есть значительный объем данных, может иметь смысл создать индексы для имен категорий в item_table и, возможно, в таблицах измерений.

Кстати, это независимый от базы данных ответ, я не работаю с SSIS / SSAS: у вас могут быть инструменты, которые оптимизируют части этого процесса для вас, но на самом деле это не так сложно / отнимает много времени, чтобы написать простым SQL.

9
ответ дан 13 December 2019 в 05:33
поделиться

Мы делаем это, используя задачу потока данных для копирования информации с момента последнего выполнения пакета во временные промежуточные таблицы, а затем обновляем архив / хранилище данными из эти промежуточные таблицы на основе ключа, затем вставьте те строки, которые еще не существуют. Обрежьте промежуточную таблицу, готовую к следующему разу, добавьте нагрузку аудита.Работа выполнена?

3
ответ дан 13 December 2019 в 05:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: