Implementacja wzorców mapowania danych
Altova MapForce zawiera potężne komponenty mapowania, które odpowiadają wzorcom projektowym dla wymagań związanych z transformacją danych. Analiza problemu mapowania danych na wczesnym etapie i przestrzeganie kilku prostych zasad może ujawnić wzorce mapowania danych, które pomagają uprościć proces tworzenia projektu mapowania i prowadzą do optymalnego rozwiązania. Projekt "Przykłady MapForce" zawiera przykładowe pliki mapowania i zestawy danych, które ilustrują wiele powszechnych wzorców mapowania danych. Przeglądanie tych przykładów i uruchamianie ich za pomocą wbudowanego silnika wykonawczego MapForce to kolejny dobry sposób na pomoc w wyborze najlepszego wzorca dla własnego projektu.

Dokładne dopasowanie vs. Dopasowanie warunkowe
Najpierw należy ustalić, czy relacja między danymi wejściowymi i wyjściowymi jest ściśle jednokierunkowa, czy też wymaga analizy bardziej złożonych warunków, takich jak zakresy "od do" lub instrukcje warunkowe typu "jeśli-to-inaczej".
Funkcja "dokładne dopasowanie" pozwala na określenie wymagań za pomocą prostej tabeli z dwiema kolumnami. Algorytm działa w następujący sposób: "szuka dokładnego dopasowania podanej wartości wejściowej w lewej kolumnie i wykorzystuje wartość znajdującą się w tej samej linii w prawej kolumnie." Należy pamiętać, że elementy w lewej kolumnie muszą być wszystkie unikalne, podczas gdy w prawej kolumnie mogą występować wartości powtarzające się.

Przykłady dokładnego dopasowywania obejmują mapowanie nazw miesięcy na liczby lub konwertowanie numerów ISBN na tytuły książek.
Opcje dokładnego dopasowania
Jeśli liczba elementów w tabeli jest stała i stosunkowo niewielka (np. do 20, a w wyjątkowych przypadkach może być nawet do 200), użyj komponentu mapy wartości. Typowymi przykładami są konwersja nazw miesięcy na liczby lub zamiana kodów na inne kody (np. "F" na "XX" i "M" na "XY").
Można nawet zmienić nazwy kolumn wejściowych i wynikowych komponentu "value-map". W oknie dialogu właściwości komponentu "value-map" wystarczy dwukrotnie kliknąć nazwę "input" lub "result" (lub kliknąć ikonę ołówka) i zacząć wpisywać. Dzięki temu łatwiej zidentyfikować przeznaczenie poszczególnych komponentów "value-map" w procesie mapowania.

Przykład MapArticle.mfd ilustruje sposób użycia komponentu "value-map".
Czasami pytają nas, dlaczego nie ma opcji, która pozwalałaby przekazywać nieznaną wartość wejściową do wyjścia bez żadnych zmian. Odpowiedź brzmi, że takie rozwiązanie nie zadziałałoby, jeśli typy danych po stronie wejściowej i wyjściowej są różne, jak w przypadku konwersji z liczby całkowitej na tekst, jak pokazano powyżej.
Rozwiązaniem jest pozostawienie opcji "Otherwise" niezaznaczonej (w takim przypadku mapa wartości dla nieznanego wejścia zwróci pustą sekwencję), a następnie użycie funkcji "substitute-missing" z biblioteki podstawowych funkcji na wyjściu, aby zastąpić tę pustą sekwencję oryginalną wartością wejściową.
Większe tabele wyszukiwania
Dla większych zbiorów danych lub tabel wyszukiwania, które często się zmieniają, najlepszym rozwiązaniem jest korzystanie z bazy danych. Oznacza to, że rzeczywiste wartości tabeli wyszukiwania nie są częścią mapowania, ale są przechowywane w bazie danych. Aby zaimplementować to rozwiązanie, należy dodać komponent bazy danych oraz komponent SQL-WHERE do mapowania. Przykład DB_PhoneList.mfd ilustruje tę strategię.
Jeśli nie można użyć bazy danych, a liczba wpisów nie jest zbyt duża, można również użyć innych komponentów, np. XML lub CSV, oraz komponentu filtrującego, jak to widać dwukrotnie w przykładzie CompletePO.mfd. Jednak takie rozwiązanie może działać wolniej w czasie działania niż użycie bazy danych z klauzulą WHERE.
W niektórych przypadkach może być konieczne wywołanie usługi internetowej w celu pobrania określonych wartości. Przykłady BookISBNConvertWS.mfd i CurrencyConverter.mfd ilustrują wykorzystanie usługi internetowej do pobierania danych.

Dopasowywanie warunkowe
Jeśli potrzebujesz bardziej złożonych warunków niż proste dopasowanie, na przykład sprawdzanie zakresów wartości wejściowych, użyj komponentu "if-else", jak widać w przykładzie ClassifyTemperatures.mfd.

Czerwone znaki plus w komponencie "if-else" umożliwiają dodawanie kolejnych testów, z których każdy opiera się na innej funkcji logicznej. Pole "otherwise" pozwala zdefiniować wynik w przypadku, gdy żaden z testów logicznych nie jest prawdziwy.
Złożone relacje i ponowne wykorzystanie komponentów
Jeśli wymagania dotyczące transformacji danych obejmują wiele danych wejściowych i wyjściowych, można łatwo zintegrować wiele mapowań wartości oraz komponenty typu "jeśli-to-to-inaczej" w jednym procesie transformacji.
Można duplikować dowolne z opisanych powyżej elementów, korzystając z funkcji kopiowania i wklejania w ramach jednego projektu lub między różnymi plikami konfiguracyjnymi. Można również ponownie wykorzystać dowolne z opisanych tutaj rozwiązań, umieszczając je wewnątrz funkcji zdefiniowanych przez użytkownika. Można zapisać własne funkcje w bibliotece funkcji użytkownika, aby móc je później wykorzystać w innych projektach lub udostępnić współpracownikom.
Sprawdź sam, jak łatwo jest wykorzystać wzorce mapowania danych MapForce w swoich projektach transformacji danych! Pobierz bezpłatną 30-dniową wersję próbną MapForce.