KONTEKST Przedsiębiorstwo posiada wiele spółek zależnych, użytkujących różne oprogramowania lub to samo oprogramowanie, jednak składujące dane w różnych bazach.
ZADANIE
Przedsiębiorstwo chce gromadzić wszystkie dane o sprzedaży w jednej bazie, celem konsolidacji oraz analiz typu BI.
Sformułowane przez nas zadanie użycia GRAVITY wpisuje się w przykłady opisane w niniejszym rozdziale, w części oznaczonej jako KONSOLIDACJE.
W poniższych przykładach skupimy się tylko i wyłącznie na sposobach zastosowania operatora OUTPUT SQL.
Przykładowe zastosowanie operatora OUTPUT SQL
Interakcja z danymi źródłowymi W niniejszym przykładzie przedstawiamy konfigurację z założeniem interakcji z bazami źródłowymi.
Standaryzacja Ponieważ konsolidujemy dane z różnych źródeł, unikalne identyfikatory muszą być podczas akcji zapisu standaryzowane (zmieniane tak, aby uniknąć duplikatów).
Strumień danych wejściowych Podczas zapisu każdego rekordu, mamy możliwość ustawienia flagi poboru danych w każdej bazie źródłowej. Dzięki temu operatory INPUT SQL (tworzenie strumienia danych wejścia), możemy budować z wykorzystaniem warunku ograniczającego pobór strumienia danych tylko do tych, które nie były wcześniej pobierane.
Na ilustracji poniżej wskazaliśmy, że w takim wypadku nastawa ACTION FOR THE SAME RECORD musi być ustawiona na ‘Pass’.
Na górnej belce tabeli, wskazanej jako tabela ‘celu’, musisz wskazać akcję STANDARIZATION (patrz ilustracja poniżej).
Po wyborze akcji STANDARIZATION system poprosi o informację o identyfikatorze źródła (zważ, że w słowniku standaryzacyjnym może być wiele źródeł danych: musisz zatem nadać nazwę swojemu źródłu lub wskazać bit magistrali wejściowej, która to zawiera unikalną nazwę).
Aby ustawiać flagę na danych źródłowych, musisz wskazać w obszarze SQL ACTIONS akcję SETUP INPUT (patrz ilustracja poniżej) dla każdego.
Aby zakończyć konfigurację akcji INPUT SQL musisz wskazać (patrz ilustracja poniżej):
INPUT→ wskaż operator typu INPUT skąd pobierasz dane do magistrali
INPUT TABLE → wskaż tabelę źródłową z operatora INPUT, którą chcesz edytować
COLUMN FOR UPDATE → wskaż kolumnę z tabeli źródłowej, która będzie edytowana (miejsce
ustawienia flagi)
VALUE FOR UPDATE → wskaż wartość edytowaną (wartość flagi)
ID SOURCE RECORD → wskaż sposób identyfikacji rekordu; wskazujesz kolumnę unikalną oraz kolumnę z magistrali wejściowej do operatora OUTPUT SQL;
Możesz również zadanie zrealizować inaczej: w takim wypadku proces będzie zasilany z tylu INPUT SQL, ile jest źródeł danych, lecz dane są łączone do jednej magistrali (używając np. operatora MERGE OF BUSBAR), a następnie jest konfigurowany tylko jeden operator OUTPUT SQL. W takim jednak przypadku musisz w operatorze OUTPUT SQL wskazać tyle akcji (ACTIONS SQL) typu SETUP INPUT, ile jest źródeł (dla każdego źródła niezależnie jedna akcja) wraz z dodaniem warunku wykonania akcji (istnieje możliwość wskazania warunku realizacji akcji SETUP INPUT w zależności od wartości bitu (kolumny) strumienia danych).
PRZYKŁADOWE ZASTOSOWANIE OPERATORA OUTPUT SQL
Interakcja z danymi źródłowymi
W niniejszym przykładzie zakładamy brak możliwości interakcji z bazami źródłowymi.
Standaryzacja
Ponieważ konsolidujemy dane z różnych źródeł, unikalne identyfikatory muszą być podczas akcji zapisu standaryzowane (zmieniane tak, aby uniknąć duplikatów).
Ponieważ zastosowanie operatora OUTPUT SQL wiąże się z operatorami INPUT SQL, spróbujmy rozważyć różne sposoby współpracy tych operatorów. Poniżej przestudiowaliśmy skutek, w zależności od nastaw konfiguracyjnych operatora źródłowego INPUT SQL, w obszarze zakresu pobierania danych i nastaw konfiguracyjnych operatora OUTPUT SQL w zakresie akcji SQL, dotyczących kasowania starych danych w tabeli celu.
INPUT SQL
OUTPUT SQL | Pobieranie całego zakresu danych | Pobieranie inkrementacyjne | Pobieranie inkrementacyjne z ‘tough position’ |
Kasowanie wszystkich rekordów w tabeli celu
Akcja SQL
* DELETE ALL RECORDS
* DELETE ALL RECORDS FOR SOURCE | Zalety:
– zawsze pełna i jednoznaczna informacja w tabeli celu
Wady:
– czasochłonność akcji | Zabronione.
Nie możesz pobierać inkrementacyjniei kasować całej informacji w tabeli celu, ponieważ nie będziesz miał pełnej informacji. | Zabronione.
Patrz uwaga obok. |
Kasowanie rekordóww tabeli celu w zakresie deklarowanym na stałe
Akcja SQL
* DELETE DECLARED SPACE | Identycznie jak wyżej.
Akcja różni się od przykładu powyżej tym, że zakładamy przestrzenieidentyfikacyjne dla każdego niezależnego źródła, co powoduje, że nie jest potrzebna standaryzacja.
Przypadek bez standaryzacji! | Zabronione.
Patrz uwaga powyżej. | Zabronione.
Patrz uwaga powyżej. |
Kasowanie rekordów w tabeli celu w zakresie wynikającym ze strumienia danych wejściowych
Akcja SQL
* DELETE SPACE BY MIN MAX | Możliwe, jednak ryzykowne.
Uzasadnienie: mogą istnieć rekordy spoza zakresu wynikającego ze strumienia danych, które w źródle pierwotnym zostały skasowane (w tym wypadku w tabeli celu nie zostaną usunięte). | Warunek:
– rekordy strumienia wejściowego już pobrane nie mogą być kasowane lub zmieniane
Zalety:
– szybkość przetwarzania | Warunek:
– rekordy strumienia wejściowego z identyfikatorami poniżej ‘twardej pozycji’ nie mogą być kasowane lub zmieniane
Zalety:
– szybkość przetwarzania |
Kasowanie lub zmiana rekordu powtórnie pobranego
Akcja SQL
* DELETE OLD RECORD
* UPDATE OLD RECORD | Identycznie jak wyżej | Skutek akcji identyczny do akcji powyżej | Nie stosować.
Skutek akcji identyczny jak powyżej pogorszony o sytuację, w której mamy rekordy skasowane w strumieniu wejściowym, w zakresie powyżej twardej pozycji, jednak wcześniej pobrane. |