IntervalMatch
Det utökade IntervalMatch-prefixet används för att skapa en tabell där diskreta numeriska värden matchas till ett eller flera numeriska intervall. Det kan även matchas med värdena för en eller flera nycklar.
Syntax:
IntervalMatch (matchfield)(loadstatement | selectstatement )
IntervalMatch (matchfield,keyfield1 [ , keyfield2, ... keyfield5 ] ) (loadstatement | selectstatement )
Prefixet IntervalMatch måste placeras framför en LOAD- eller SELECT-sats som läser in intervallen. Fältet som innehåller de diskreta datapunkterna (Time i exemplet nedan) och ytterligare nycklar måste redan ha laddats i QlikView före satsen med IntervalMatch prefixet. Prefixet kan inte av sig själv läsa in detta fält från databasens tabell. Prefixet omvandlar den inlästa tabellen med intervall och nycklar till en tabell som innehåller ytterligare en kolumn: de diskreta numeriska datapunkterna. Det utvidgar dessutom antalet poster så att den nya tabellen får en post per möjlig kombination av diskret datapunkt, intervall och värdet på nyckelfältet (nyckelfälten).
Intervallen kan överlappa varandra. De diskreta värdena länkas då till alla passande intervall.
Det utökade IntervalMatch-prefixet används för att skapa en tabell där diskreta numeriska värden matchas till ett eller flera numeriska intervall, samt med värdena för en eller flera nycklar. Detta är en mycket kraftfull och flexibel funktion som kan användas för att länka transaktioner med dimensioner som förändras över tid: långsamt föränderliga dimensioner.
För att undvika att odefinierade intervallgränser ignoreras kan NULL-värden behöva mappas till andra fält som utgör intervallets undre och övre gränser. Detta kan hanteras av NullAsValue-satsen eller av ett explicit test som ersätter NULL-värden med ett numeriskt värde före eller efter någon av de diskreta numeriska datapunkterna.
Argument:
Argument | Beskrivning |
---|---|
matchfield | Det fält som innehåller de diskreta numeriska värden som ska länkas till intervallen. |
keyfield | Fält som innehåller attribut som ska matchas i omvandlingen. |
loadstatement or selectstatement | Måste resultera i en tabell där det första fältet innehåller den undre gränsen för varje intervall, det andra fältet innehåller den övre gränsen för varje intervall och i fallet då nyckelmatchning används innehåller det tredje och eventuella efterföljande fält det eller de nyckelfält som finns i IntervalMatch-satsen. Intervallen är alltid slutna, vilket innebär att start- och slutpunkterna alltid är inkluderade i intervallet. Om icke-numeriska gränser används, ignoreras intervallet (odefinerat). |
Exempel 1:
I tabellerna nedan definieras de första start- och sluttiderna för produktionen av olika order. Den andra tabellen visar ett antal diskreta händelser. Med IntervalMatch-prefixet kan de två tabellerna kopplas logiskt för att exempelvis ta reda på vilka order som påverkades av driftstörningar och vilka order som behandlades i vilka skift.
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;
Resultat:
Tabellen OrderLog innehåller nu ytterligare en kolumn: Time. Antalet poster utökas också.
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 |
Exempel 2: (med keyfield)
Samma exempel som ovan, med ProductionLine tillagt som ett nyckelfält.
Resultat:
En tabellbox kunde nu skapas, enligt nedan:
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 |