IntervalMatch
Mithilfe des Zusatzes IntervalMatch wird eine Tabelle angelegt, in der die diskreten numerischen Werte mit einem oder mehreren numerischen Intervallen abgeglichen werden und optional die Werte von einem oder mehreren zusätzlichen Schlüsseln.
Syntax:
IntervalMatch (matchfield)(loadstatement | selectstatement )
IntervalMatch (matchfield,keyfield1 [ , keyfield2, ... keyfield5 ] ) (loadstatement | selectstatement )
Der Zusatz IntervalMatch muss vor dem Befehl LOAD oder SELECT angelegt werden, mit dem die Intervalle geladen werden. Das Feld, das die diskreten Datenpunkte (im Beispiel unten die Uhrzeit) und zusätzlichen Schlüssel enthält, muss vor dem Befehl mit dem IntervalMatch-Zusatz bereits in QlikView geladen sein. Der Zusatz liest dieses Feld nicht selbstständig in der Datenbanktabelle. Der Zusatz formt die geladene Intervalltabelle und Schlüssel in eine Tabelle um, die eine zusätzliche Spalte enthält: die diskreten numerischen Datenpunkte. Er erweitert auch die Anzahl der Datensätze, sodass die neue Tabelle über einen Datensatz für jede mögliche Kombination diskreter Datenpunkte, des Intervalls und des Werts der Schlüsselfelder verfügt.
Wenn sich die Intervalle überschneiden, werden die Werte jedem passenden Intervall zugeordnet.
Mithilfe des Zusatzes IntervalMatch wird eine Tabelle angelegt, in der die diskreten numerischen Werte mit einem oder mehreren numerischen Intervallen abgeglichen werden und zugleich ein Abgleich zwischen den Werten von einem oder mehreren zusätzlichen Schlüsseln erfolgt. Diese Funktion ist sehr leistungsfähig und flexibel. Sie lässt sich zum Verknüpfen von Transaktionen mit Dimensionen einsetzen, die sich im Laufe der Zeit verändern: sich langsam verändernde Dimensionen.
Um zu verhindern, dass nicht definierte Intervallbeschränkungen ignoriert werden, sollte es möglich sein, NULL-Werte anderen Feldern zuzuordnen, welche die untere oder obere Grenze des Intervalls bilden. Dieser Vorgang kann über den Befehl NullAsValue oder einen Test erfolgen, in dem NULL-Werte deutlich vor oder nach den diskreten numerischen Datenpunkten durch einen numerischen Wert ersetzt werden.
Argumente:
Argument | Beschreibung |
---|---|
matchfield | Das Feld, dessen numerische Werte in Intervallen gruppiert werden. |
keyfield | Felder, welche die zusätzlichen Attribute enthalten, die während der Umformung abgeglichen werden. |
loadstatement or selectstatement | Muss in einer Tabelle resultieren, in der das erste Feld den unteren Grenzwert jedes Intervalls, das zweite Feld den oberen Grenzwert jedes Intervalls und – bei Verwendung von Schlüsselwortabgleich – das dritte und alle folgenden Felder das/die Schlüsselfeld(er) enthalten, die im IntervalMatch-Befehl enthalten sind. Die Intervalle sind abgeschlossen, d. h. die Grenzwerte sind in den Intervallen enthalten. Nicht numerische Beschränkungen bewirken, dass das Intervall nicht berücksichtigt wird (undefiniert). |
Beispiel 1:
In den beiden unten stehenden Tabellen zeigt die erste Tabelle Bearbeitungsstart und -ende verschiedener Aufträge an. Die zweite führt die Zahl der diskreten Auslöser auf. Mithilfe des Zusatzes IntervalMatch werden die Tabellen logisch verknüpft, um z. B. herauszufinden, welche Aufträge von welchen Ereignissen betroffen waren und welche Aufträge von welcher Schicht verarbeitet wurden.
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;
Ergebnis:
Die Tabelle OrderLog enthält jetzt die zusätzliche Spalte: Time. Die Anzahl der Datensätze ist ebenfalls sichtbar.
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 |
Beispiel 2: (verwenden von keyfield)
Gleiches Beispiel wie oben, mit zusätzlich ProductionLine als Schlüsselfeld.
Ergebnis:
Sie können nun wie nachfolgend beschrieben eine Tabellenbox anlegen:
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 |