Przeskocz do zawartości głównej

IntervalMatch

Prefiks IntervalMatch służy do utworzenia tabeli dopasowującej dyskretne wartości liczbowe do jednego lub wielu interwałów liczbowych, opcjonalnie dopasowując wartości jednego lub kilku kluczy dodatkowych.

Składnia:  

IntervalMatch (matchfield)(loadstatement | selectstatement )

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

 

Prefiks IntervalMatch musi być podany przed instrukcją LOAD lub SELECT ładującą interwały. Pole zawierające dyskretne punkty danych (w poniższym przykładzie jest to pole Time) i dodatkowe klucze musi zostać załadowane do aplikacji QlikView przed instrukcją z prefiksem IntervalMatch. Sam prefiks nie odczytuje tego pola z tabeli w bazie danych. 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).

Interwały mogą na siebie zachodzić, a wartości dyskretne zostaną powiązane ze wszystkimi pasującymi interwałami.

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.

Aby uniknąć odrzucania niezdefiniowanych limitów interwału, niekiedy może być konieczne zezwolenie na mapowanie 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 w wyniku zastosowania jawnego sprawdzenia, 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.

Argumenty:  

Argumenty IntervalMatch
Argument Opis
matchfield Pole zawierające dyskretne wartości liczbowe, które zostaną powiązane z interwałami.
keyfield Pola z dodatkowymi atrybutami, które będą dopasowywane w ramach przekształcenia.
loadstatement or selectstatement Wynikiem musi być tabela, w której pierwsze pole zawiera dolny limit każdego interwału, drugie pole górny limit każdego interwału, a przypadku używania dopasowania kluczy trzecie i każde kolejne pole zawiera słowa kluczowe obecne 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).

Przykład 1:  

Pierwsza z dwóch poniższych tabel definiuje czasy rozpoczęcia i zakończenia produkcji różnych zamówień. Druga zawiera listę dyskretnych zdarzeń. Za pomocą prefiksu IntervalMatch można zdefiniować połączenie logiczne dwóch tabel na przykład w celu ustalenia, która zmiana realizowała poszczególne zamówienia lub których zamówień dotyczyły zakłócenia.

EventLog:
LOAD * Inline [
Time, Event, Comment
00:00, 0, Start of shift 1
01:18, 1, Line stop
02:23, 2, Line restart 50%
04:15, 3, Line speed 100%
08:00, 4, Start of shift 2
11:43, 5, End of production
];

OrderLog:
LOAD * INLINE [
Start, End, Order
01:00, 03:35, A
02:30, 07:58, B
03:04, 10:27, C
07:23, 11:43, D
];

//Link the field Time to the time intervals defined by the fields Start and End.
Inner Join IntervalMatch ( Time )
LOAD Start, End
Resident OrderLog;

Wynik:

Tabela OrderLog zawiera teraz dodatkową kolumnę: Time. Liczba rekordów także zostaje rozwinięta.

Example 1
Time Start End Order

00:00

- - -
01:18 01:00 03:35 A
02:23 01:00 03:35 A
04:15 02:30 07:58 B
04:15 03:04 10:27 C
08:00 03:04 10:27 C
08:00 07:23 11:43 D
11:43 07:23

11:43

D

Przykład 2: (przy użyciu wartości keyfield)

Ten sam przykład co powyżej, w wyniku którego dodaje się ProductionLine jako pole klucza.

EventLog:
LOAD * Inline [
Time, Event, Comment, ProductionLine
00:00, 0, Start of shift 1, P1
01:00, 0, Start of shift 1, P2
01:18, 1, Line stop, P1
02:23, 2, Line restart 50%, P1
04:15, 3, Line speed 100%, P1
08:00, 4, Start of shift 2, P1
09:00, 4, Start of shift 2, P2
11:43, 5, End of production, P1
11:43, 5, End of production, P2
];
 
OrderLog:
LOAD * INLINE [
Start, End, Order, ProductionLine
01:00, 03:35, A, P1
02:30, 07:58, B, P1
03:04, 10:27, C, P1
07:23, 11:43, D, P2
];
 
//Link the field Time to the time intervals defined by the fields Start and End and match the values
// to the key ProductionLine.
Inner Join
IntervalMatch ( Time, ProductionLine )
LOAD Start, End, ProductionLine
Resident OrderLog;

Wynik:

Można teraz utworzyć następującą tabelę:

Example 2
ProductionLineTime EventCommentOrderStart End
P1

00:00

0Start of shift 1-- -
P201:000Start of shift 1---
P101:18 1Line stopA01:00 03:35
P102:23 2Line restart 50%A01:00 03:35
P104:15 3Line speed 100%B02:30 07:58
P104:15 3Line speed 100%C03:04 10:27
P108:00 4Start of shift 2C03:04 10:27
P209:00 4Start of shift 2D07:23 11:43
P111:43 5End of production-- -
P211:43 5End of productionD07:23 11:43

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