Izabela
Korzińska
Architekt /
Developer ETL/TEam
Leader, Roche Polska
Temat: Najlepsze praktyki
To może zacznę :) Prawdopodobnie od rzeczy, które są dla większości osób oczywiste (choć na podstawie doświadczeń z pewną firmą wdrożeniową mogę podejrzewać, że dla niektórych powinny takie być, a nie są):1. Designer:
Wykorzystanie mappletów, jeśli tylko szereg czynności powtarza się więcej, niż 2 razy. Dla początkujących: mapplety można potraktować, jak funkcje składowane. Mają parametry wejściowe i wyjściowe. A zawierają po prostu kilka-kilkanaście obiektów (lookupów, filtrów, agregacji, wyrażeń, itp.), połączonych ze sobą przepływami. Przedstawiają jakiś reużywalny algorytm - np. dobór sztucznego klucza (SK) kontrahenta na podstawie jego ID z sys. źródłowego i daty, na jaką chcemy znaleźć wersję rekordu w tabeli wymiarów. Ja używam do tego celu aż mappletu, ponieważ jeśli nie znajdę danych kontrahenta na jakąś datę, szukam najwcześniejszej wersji, itd... i te kilka obiektów, wrzucanych za każdym razem do mappingu wolę zaszyć w mapplecie i wtedy do mappingu dołączam zamiast nich tylko ten jeden obiekt - mapplet. To również gwarantuje spójność algorytmu wyboru SK kontrahenta.
Warto przed przystąpieniem do tworzenia mappingów przeanalizować ilość takich powtarzających się czynności i zaprojektować szereg mappletów. To spowoduje, że mappingi będą bardziej przejrzyste, a jeśli będzie konieczna zmiana algorytmu wyboru SK kontrahenta (np. zamiast pierwszej wersji zdecydujemy sie na ostatnią) - wystarczy to zmienić w jednym miejscu.
2. Designer:
Ograniczanie liczby mappingów. Jeśli mamy 2-3 tabele do wypełnienia i są one powiązane tematycznie (np kontrahenci, ich adresy, ich dowody toższamości), które muszą zostać wypełnione jedna po drugiej, albo jedną tablę, do której najpierw insertujemy, a potem wykonujemy na niej update, zróbmy jeden mapping, a w nim kilka ścieżek. Potem wykorzystajmy target load plan do określenia kolejności wykonywania tych ścieżek (zapełniania tabel docelowych - targetów). Przy 100 tabelach w hurtowni siatka połączeń pomiędy mappingami (zwłaszcza 150-cioma, bo osobne są na update'y) wygląda makabrycznie.
3. Designer:
Wykorzystanie opcji "Dynamic lookup cache" w lookupie - pozwala sprawdzić, czy rekord o danym PK został załadowany do targetu w bieżącym ładowaniu, czyli bierze pod uwagę jeszcze niescommitowane dane. W standardzie, czyli bez zaznaczenia tej opcji lookup pobiera tylko rekordy, które znajdowały się już w tabeli przed uruchomieniem mappingu. To się bardzo przydaje, kiedy mamy w hurtowni update'owane fakty. Bo i tak bywa.
4. Ustalenie konwencji nazewniczej. Sprawa dla części zapewne bez znaczenia, ale dla mnie ma znaczenie ogromne. Często nie muszę zaglądać do jakiegoś obiektu w mappingu, bo nazwa mówi mi na jego temat wszystko. Łatwo się również wyszukuje transformacje i mapplety na liście, jeśli są ponazywane w sposób uporządkowany.
5. Designer:
Ograniczanie pól w lookupie do niezbędnego minimum, a nie pozostawianie tam wszystkich pól z tabeli, do której sięgamy. Bo Informatica też do niej sięga i ładuje zawartość wszystkich określonych w lookupie pól do cache'a. Czyli w najgorszym przypadku - całą tabelę.
To na razie tyle.
Miłego dnia :)Izabela Korzińska edytował(a) ten post dnia 17.11.11 o godzinie 14:01