IntervalMatch (składnia rozszerzona)

Rozszerzony prefiks IntervalMatch służy do utworzenia tabeli dopasowującej dyskretne wartości liczbowe do jednego lub wielu interwałów liczbowych, jednocześnie dopasowując przy tym wartości jednego lub kilku kluczy dodatkowych.

Jest to funkcja dająca ogromne możliwości i elastyczność, której można używać do łączenia transakcji z wymiarami zmieniającymi się w czasie, tzw. powoli zmieniającymi się wymiarami.

Prefiks IntervalMatch musi być podany przed instrukcją Load lub Select ładującą interwały. Tabela zawierająca dyskretne punkty danych i dodatkowe klucze musi zostać załadowana do aplikacji QlikView przed instrukcją z prefiksem IntervalMatch. Działanie prefiksu polega na przekształceniu załadowanej tabeli interwałów i kluczy w tabelę zawierającą dodatkową kolumnę dyskretnych punktów danych liczbowych. Dodatkowo zwiększana jest liczba rekordów, nowa tabela ma zatem jeden rekord na każdą kombinację dyskretnego punktu danych, interwału i wartości pola klucza (lub wielu pól klucza).

Składnia jest następująca:

intervalmatch (matchfield,keyfield1 [ , keyfield2, ... keyfield5 ] ) (loadstatement | selectstatement )

matchfield to pole zawierające dyskretne wartości liczbowe, które zostaną powiązane z interwałami.

keyfield(s) to jedno lub wiele pól z dodatkowymi atrybutami, które będą dopasowywane w ramach przekształcenia.

Wynikiem instrukcji loadstatement lub selectstatement musi być tabela, której pierwsze dwa pola określają dolny i górny limit każdego interwału, a pola trzecie i ewentualne dalsze zawierają pola klucza podane jako argumenty keyfield(s) w instrukcji IntervalMatch. Interwały są zawsze zamknięte, tj. punkty końcowe są zawarte w interwale. Podanie limitów nieliczbowych powoduje odrzucenie interwału (będzie on niezdefiniowany).

Aby uniknąć odrzucania niezdefiniowanych limitów interwału, niekiedy może być konieczne dopuszczenie mapowania wartości NULL na inne pola określające dolne lub górne limity interwału. Można to osiągnąć za pomocą instrukcji NullAsValue lub stosując jawne sprawdzenie, w ramach którego wartości NULL będą zastępowane wartością liczbową znacznie większą (lub mniejszą) od jakiegokolwiek z dyskretnych punktów danych liczbowych.

Przykład:  

Inner Join IntervalMatch (Date,Key) LOAD FirstDate, LastDate, Key resident Key;