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.
Syntax:
IntervalMatch (matchfield)(loadstatement | selectstatement )
IntervalMatch (matchfield,keyfield1 [ , keyfield2, ... keyfield5 ] ) (loadstatement | selectstatement )
Prefiks
Interwały mogą na siebie zachodzić, a wartości dyskretne zostaną powiązane ze wszystkimi pasującymi interwałami.
Rozszerzony prefiks
Aby uniknąć odrzucania niezdefiniowanych limitów interwału, niekiedy może być konieczne zezwolenie na mapowanie wartości
Arguments:
Argument | Opis |
---|---|
|
Pole zawierające dyskretne wartości liczbowe, które zostaną powiązane z interwałami. |
|
Pola z dodatkowymi atrybutami, które będą dopasowywane w ramach przekształcenia. |
|
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). |
Example 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.
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.
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 |
Example 2: (przy użyciu wartości
Ten sam przykład co powyżej, w wyniku którego dodaje się ProductionLine jako pole klucza.
Wynik:
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 |