Przeskocz do zawartości głównej Przejdź do treści uzupełniającej

Merge

Do dowolnej instrukcji LOAD lub SELECT w skrypcie można dodać prefiks Merge, aby określić, że ładowana tabela powinna zostać scalona w innej tabeli. Określa on również, że ta instrukcja powinna być uruchamiana podczas częściowego ładowania.

Typowym użyciem jest załadowanie dziennika zmian i wykorzystanie go do zastosowania inserts, updates oraz deletes do istniejącej tabeli.

Składnia:  

Merge [only] [(SequenceNoField [, SequenceNoVar])] On ListOfKeys [Concatenate [(TableName)]] (loadstatement | selectstatement)

 

Podczas normalnego (nie częściowego) ładowania konstrukcja Merge LOAD będzie działać jako normalna instrukcja Load, ale z dodatkową funkcjonalnością polegającą na usuwaniu starszych, zbędnych rekordów oraz rekordów oznaczonych do usunięcia. Pierwsze pole instrukcji load musi zawierać informacje o operacji: Insert, Update lub Delete.

W przypadku każdego załadowanego rekordu identyfikator rekordu zostanie porównany z wcześniej załadowanymi rekordami i zachowany zostanie tylko najnowszy rekord (zgodnie z numeracją). Jeśli najnowszy rekord jest oznaczony Delete, żadne rekordy nie zostaną zachowane.

Jeśli będzie używany prefiks Concatenate lub jeśli będzie istnieć tabela z tym samym zestawem pól, będzie to odpowiednia tabela do zmodyfikowania. W przeciwnym razie wynik konstrukcji Merge LOAD zostanie zapisany w nowej tabeli.

Jeśli będzie używany prefiks Concatenate, wynikowa tabela może mieć więcej pól niż dziennik zmian, który jest używany jako dane wejściowe dla polecenia Merge.

Częściowe ładowanie da takie same rezultaty jak pełne. Jedyna różnica polega na tym, że konstrukcja Merge LOAD nigdy nie utworzy nowej tabeli. Zawsze istnieje odpowiednia tabela z poprzedniego wykonania skryptu do zmodyfikowania.

Jeśli załadowany dziennik zmian jest dziennikiem akumulowanym, to znaczy zawiera zmiany, które zostały już załadowane, można użyć parametru SequenceNoVar w klauzuli Where w celu ograniczenia ilości danych wejściowych. Konstrukcji Merge LOAD można wówczas użyć do załadowania tylko rekordów, w których wartość pola SequenceNoField jest większa niż SequenceNoVar. Po zakończeniu konstrukcja Merge LOAD przypisze nową wartość do SequenceNoVar z maksymalną wartością widoczną w polu SequenceNoField.

Argumenty:  

Argumenty
Argument Opis
only Opcjonalny kwalifikator wskazujący, że instrukcja ma być wykonywana tylko podczas częściowego ładowania. Należy go pominąć podczas normalnych (nie częściowych) ładowań.
SequenceNoField Nazwa pola zawierającego znacznik czasu lub numer kolejny, który definiuje kolejność operacji.
SequenceNoVar

Nazwa zmiennej, której przypisywana jest maksymalna wartość SequenceNoField scalanej tabeli.

ListOfKeys Lista nazw pól oddzielonych przecinkami, określająca klucz podstawowy.
operation Pierwsze pole instrukcji load musi zawierać operację: Insert, Update lub Delete. „i”, 'u” i „d”są również akceptowane.

Czy ta strona była pomocna?

Jeżeli natkniesz się na problemy z tą stroną lub jej zawartością — literówkę, brakujący krok lub błąd techniczny — daj nam znać, co możemy poprawić!

Dołącz do Programu Modernizacji Analityki

Remove banner from view

Przeprowadź modernizację bez szkody dla Twoich cennych aplikacji QlikView za pomocą programu Analytics Modernization Program. Kliknij tutaj aby uzyskać więcej informacji lub skontaktuj się z nami: ampquestions@qlik.com