Logo
    Pobierz gravity.integration

    Search

    Home

    Informacje podstawowe

    Dokumentacja techniczna

    Przykłady zastosowań

    gravity.integration
    gravity.integration
    Zastosowanie operatora OUTPUT SQL

    Zastosowanie operatora OUTPUT SQL

    icon
    Operator OUTPUT SQL jest najbardziej złożonym komponentem systemu GRAVITY i z tego powodu wymaga szczególnej uwagi. Poniżej przygotowaliśmy kilka przykładów, które pozwolą lepiej zrozumieć jego zastosowanie.
    KONTEKST

    Przedsię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’.

    image

    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.

    icon
    Przepływ strumienia danych można konfigurować dla każdego źródła niezależnie (tyle operatorów INPUT SQL i OUTPUT SQL, ile źródeł).

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

    icon
    Przykład skuteczny dla obiektów (np. faktury), które mogą się zmieniać, ale nie są usuwane w źródle.

    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.