IntervalMatch
Il prefisso IntervalMatch consente di creare una tabella che corrisponde sia ai valori numerici discreti su uno o più intervalli numerici che, in modo opzionale, ai valori di una o più chiavi aggiuntive.
Sintassi:
IntervalMatch (matchfield)(loadstatement | selectstatement )
IntervalMatch (matchfield,keyfield1 [ , keyfield2, ... keyfield5 ] ) (loadstatement | selectstatement )
Il prefisso IntervalMatch deve essere inserito prima di un'istruzione LOAD o SELECT che carica gli intervalli. Il campo che contiene i punti dati discreti (Time nell’esempio seguente) e chiavi aggiuntive deve essere già stato caricato in QlikView prima dell'istruzione con il prefisso IntervalMatch. Il prefisso non è in grado di leggere questo campo dalla tabella del database, pertanto trasforma la tabella caricata degli intervalli e delle chiavi in una tabella contenente una colonna aggiuntiva: i punti dati numerici discreti. Inoltre, espande il numero di record in modo che la nuova tabella disponga di un record per ogni combinazione possibile di punti dati discreti, intervallo e valore dei campi chiave.
Gli intervalli possono sovrapporsi e i valori discreti saranno collegati a tutti gli intervalli corrispondenti.
Il prefisso IntervalMatch esteso consente di creare una tabella che corrisponde sia ai valori numerici discreti su uno o più intervalli numerici sia ai valori di una o più chiavi aggiuntive. Si tratta di una funzione estremamente avanzata e flessibile che può essere utilizzata per il collegamento di transazioni con dimensioni che cambiano nel corso del tempo: dimensioni che cambiano lentamente.
Per evitare che i limiti degli intervalli non definiti vengano ignorati, potrebbe essere necessario consentire il mapping dei valori NULL sugli altri campi che costituiscono i limiti inferiore e superiore dell'intervallo. Questa operazione può essere eseguita dall'istruzione NullAsValue o da un test esplicito che sostituisce i valori NULL con un valore numerico prima o dopo qualsiasi dei punti dati numerici discreti.
Argomenti:
Argomento | Descrizione |
---|---|
matchfield | Il campo contenente i valori numerici discreti da collegare agli intervalli. |
keyfield | I campi contenenti gli attributi aggiuntivi da associare nella trasformazione. |
loadstatement or selectstatement | Il risultato deve essere una tabella in cui il primo campo contiene il limite inferiore di ciascun intervallo, il secondo campo contiene il limite superiore di ciascun intervallo e, nel caso di utilizzo di una corrispondenza chiave, il terzo campo e quelli successivi contengono gli elementi keyfield presenti nell'istruzione IntervalMatch. Gli intervalli sono sempre chiusi, ossia i punti di fine sono inclusi nell'intervallo. I limiti non numerici fanno in modo che l'intervallo venga ignorato (non definito). |
Esempio 1:
Nelle due tabelle seguenti, la prima tabella definisce l'ora di inizio e l'ora di fine relative alla produzione di diversi ordini. La seconda contiene un elenco di diversi eventi discreti. Utilizzando il prefisso IntervalMatch, è possibile eseguire il collegamento logico delle due tabelle in modo da poter individuare, ad esempio, gli ordini che hanno subito interruzioni e gli ordini elaborati in base a turni specifici.
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;
Risultato:
La tabella OrderLog contiene ora una colonna aggiuntiva: Time. Anche il numero di record viene espanso.
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 |
Esempio 2: (mediante keyfield)
Lo stesso esempio riportato sopra, aggiungendo ProductionLine come campo chiave.
Risultato:
È ora possibile creare una tabella come mostrato di seguito:
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 |