KONTEKSTPrzedsiębiorstwo posiada wiele spółek zależnych, korzystających z różnych systemów informatycznych lub tego samego systemu, ale przechowujących dane w odrębnych bazach.
ZADANIE
Przedsiębiorstwo chce gromadzić wszystkie dane o sprzedaży w jednej bazie w celu konsolidacji oraz analiz typu BI.
Opisany przykład użycia GRAVITY wpisuje się w scenariusze opisane w części KONSOLIDACJE. W poniższych przykładach skupiamy się wyłącznie na zastosowaniu operatora OUTPUT SQL.
Interakcja z danymi źródłowymi Przykład zakłada interakcję z bazami źródłowymi.
Standaryzacja Konsolidując dane z różnych źródeł, unikalne identyfikatory muszą być standaryzowane podczas zapisu, aby uniknąć duplikatów.
Strumień danych wejściowych Podczas zapisu każdego rekordu można ustawić flagę poboru danych w każdej bazie źródłowej. Pozwala to w operatorach INPUT SQL ograniczyć pobór danych wyłącznie do rekordów, które nie były wcześniej pobierane.
W takim przypadku nastawa ACTION FOR THE SAME RECORD musi być ustawiona na ‘Pass’.
Na górnej belce tabeli ‘celu’ należy wskazać akcję STANDARIZATION (patrz ilustracja poniżej).
Po wyborze akcji system poprosi o identyfikator źródła (może być wiele źródeł w słowniku standaryzacyjnym, należy więc nadać nazwę źródłu lub wskazać bit magistrali wejściowej zawierający unikalną nazwę). Aby ustawić flagę w danych źródłowych, w obszarze SQL ACTIONS należy wybrać akcję SETUP INPUT (patrz ilustracja poniżej) dla każdego źródła.
Konfiguracja akcji INPUT SQL wymaga wskazania (patrz ilustracja poniżej):
INPUT→ operator typu INPUT, skąd pobierane są dane,
INPUT TABLE → tabela źródłowa do edycji,
COLUMN FOR UPDATE →kolumna edytowana (np. flaga),
VALUE FOR UPDATE → wskaż wartość edytowaną (wartość flagi),
ID SOURCE RECORD → sposób identyfikacji rekordu (kolumna unikalna i kolumna z magistrali wejściowej do operatora OUTPUT SQL.
Alternatywnie, dane z wielu źródeł mogą być łączone do jednej magistrali (np. przy użyciu operatora MERGE OF BUSBAR), a następnie używany jest pojedynczy 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
Przykład zakłada brak możliwości interakcji z bazami źródłowymi.
Standaryzacja
Unikalne identyfikatory muszą być standaryzowane, 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. |