2010-03-21 6 views
5

Chcę wypełnić gwiazdę schematu/kostki w SSIS/SSAS.Najlepsze praktyki do wypełniania tabel faktów i wymiarów z transakcyjnego płaskiego DB

Przygotowałem wszystkie moje tabele wymiarów i moją tabelę faktów, klucze podstawowe itp

Źródłem jest „płaska” (na poziomie elementu) stół i mój problem jest teraz jak podzielić go się i dostać go od jeden do odpowiednich tabel.

Zrobiłem sporo wyszukiwania, ale nie mogłem znaleźć satysfakcjonującego rozwiązania problemu. Można sobie wyobrazić, że jest to dość powszechny problem/sytuacja w rozwoju BI ?!

Dzięki, alexl

Odpowiedz

9

Na początek, to zależy od tego, czy chcesz zrobić prosty początkowego transferu danych lub coś bardziej wyrafinowane (np przyrostowego). Zakładam, że wykonujesz wstępny transfer danych.

Say tabela element ma kolumny w następujący sposób: id, cat1, cat2, cat3, cat4, ... Zakładając kategorie 1-4 mają kolumny id, cat_name można załadować dim_cat1 (tabela wymiarów z kategorii pkt 1) w następujący sposób:

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

można wykonać to samo dla wszystkich pozostałych kategorii/tabel wymiarów. Zakładam, że tabele wymiarów automatycznie generują identyfikatory. Teraz, aby załadować tabelę fakt:

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 
... 

Jeśli masz znaczną ilość danych, może to mieć sens, aby utworzyć indeksy nazw kategorii w item_table i może tabelach wymiarów.

Btw, jest to odpowiedź niezależna od bazy danych, nie pracuję z SSIS/SSAS: możesz mieć dostępne narzędzia, które usprawniają części tego procesu, ale naprawdę nie jest to trudne/czasochłonne do napisania zwykły SQL.

3

Robimy to za pomocą zadania przepływu danych, aby skopiować informacje od czasu ostatniego wykonania pakietu do tymczasowych tabel tymczasowych, a następnie zaktualizować archiwum/magazyn o dane z tych tabel pomostowych na podstawie klucza, a następnie wstawić te wiersze jeszcze istnieje. Obetnij tabelę pomostową, aby była gotowa na następny czas, dodaj obciążenie audytu. Zadanie wykonane?

0

Często stosuję kostki przeciwko operacyjnym magazynom danych zamiast schematów gwiazd. Wydajność prawie zawsze będzie lepsza ze schematem gwiazdy, ale w przypadku prototypowania/testowania nie bój się tworzyć kostek przeciwko danym, które NIE MASZ gwiazdowy schemat CHCESZ.