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 Qlik Sense 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.
Gdy prefiks IntervalMatch jest rozszerzony o pola klucza, wówczas 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.
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:
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 zawiera listę zdarzeń dyskretnych, a druga definiuje czasy rozpoczęcia i zakończenia produkcji różnych zamówień. 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.
Tabela OrderLog zawiera teraz dodatkową kolumnę: Time. Liczba rekordów także zostaje rozwinięta.
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.
Można teraz utworzyć następującą tabelę:
ProductionLine | Time | Event | Comment | Order | Start | End |
---|---|---|---|---|---|---|
P1 |
00:00 |
0 | Start of shift 1 | - | - | - |
P2 | 01:00 | 0 | Start of shift 1 | - | - | - |
P1 | 01:18 | 1 | Line stop | A | 01:00 | 03:35 |
P1 | 02:23 | 2 | Line restart 50% | A | 01:00 | 03:35 |
P1 | 04:15 | 3 | Line speed 100% | B | 02:30 | 07:58 |
P1 | 04:15 | 3 | Line speed 100% | C | 03:04 | 10:27 |
P1 | 08:00 | 4 | Start of shift 2 | C | 03:04 | 10:27 |
P2 | 09:00 | 4 | Start of shift 2 | D | 07:23 | 11:43 |
P1 | 11:43 | 5 | End of production | - | - | - |
P2 | 11:43 | 5 | End of production | D | 07:23 | 11:43 |