Ga naar hoofdinhoud Ga naar aanvullende inhoud

Overeenkomende intervallen voor discrete gegevens

Het prefix intervalmatch bij een LOAD- of SELECT-opdracht wordt gebruikt om discrete numerieke waarden aan een of meer numerieke intervallen te koppelen. Dit is een zeer krachtige functie die u bijvoorbeeld in productieomgevingen kunt gebruiken, zoals in het volgende voorbeeld.

Voorbeeld:  

Kijk naar de twee tabellen verderop. De eerste tabel toont het begin en eind van de productie van verschillende orders. De tweede tabel toont enkele discrete gebeurtenissen. Hoe zorgen we voor een associatie tussen de discrete gebeurtenissen en de bestellingen, om bijvoorbeeld uit te zoeken welke bestellingen last hadden van storingen en welke bestellingen door welke ploegen zijn verwerkt?

Tabel OrderLog
Start End Volgorde
01:00 03:35 A
02:30 07:58 B
03:04 10:27 C
07:23 11:43 D

 

Tabel EventLog
Tijd Gebeurtenis Opmerking
00:00 0 Start van dienst 1
01:18 1 Lijn stoppen
02:23 2 Lijn opnieuw starten 50%
04:15 3 Lijn snelheid 100%
08:00 4 Start van dienst 2
11:43 5 Einde productie

Laad eerst de twee tabellen zoals gebruikelijk, koppel vervolgens het veld Time aan de intervallen die zijn gedefinieerd door de velden Start en End:

SELECT * from OrderLog;

SELECT * from EventLog;

Intervalmatch (Time) SELECT Start,End from OrderLog;

U kunt nu een tabel maken in QlikView zoals hieronder wordt weergegeven:

A table in QlikView combining the above tables.

Nu kunnen we duidelijk zien dat hoofdzakelijk bestelling A gevolgen ondervond van het stoppen van de band, maar dat de verminderde snelheid van de band ook gevolgen had voor bestelling B en C. Alleen de bestellingen C en D zijn gedeeltelijk afgehandeld door Shift 2.

Houd rekening met het volgende als u intervalmatch gebruikt:

  • Vóór de intervalmatch-opdracht moet het veld met de discrete gegevenspunten (Time in het bovenstaande voorbeeld) al in QlikView zijn gelezen. De intervalmatch-opdracht leest dit veld niet zelf uit de databasetabel.
  • De tabel die wordt gelezen in de intervalmatch LOAD- of SELECT-opdracht moet altijd exact twee velden bevatten (Start en End in het voorbeeld hierboven). Voor het vormen van een koppeling met andere velden moet u de intervalvelden samen lezen met extra velden in een afzonderlijke LOAD- of SELECT-opdracht (de eerste SELECT-opdracht in het bovenstaande voorbeeld).
  • De intervallen zijn altijd gesloten, dat wil zeggen dat de eindpunten in het interval zijn opgenomen. Bij niet-numerieke limieten wordt het interval genegeerd (ongedefinieerd) en bij NULL-limieten wordt het interval tot oneindig uitgebreid (onbeperkt).
  • De intervallen kunnen elkaar overlappen en de discrete waarden worden aan alle relevante intervallen gekoppeld.

De uitgebreide syntaxis van intervalmatch gebruiken om problemen met langzaam veranderende dimensies op te lossen

Met de uitgebreide intervalmatch-syntaxis kunt u bekende problemen met langzaam veranderende dimensies in brongegevens oplossen.

Voorbeeldscript:

SET NullInterpret='';

 

IntervalTable:

LOAD Key, ValidFrom, Team from IntervalTable.xls;

NullAsValue FirstDate,LastDate;

 

Key:

LOAD

Key,

ValidFrom as FirstDate,

date(if(Key=previous(Key),

previous(ValidFrom) - 1)) as LastDate,

Team

RESIDENT IntervalTable order by Key, ValidFrom desc;

 

drop table IntervalTable;

 

Transact:

LOAD Key, Name, Date, Sales from Transact.xls;

 

INNER JOIN intervalmatch (Date,Key) LOAD FirstDate, LastDate, Key RESIDENT Key;

De opdracht nullinterpret is alleen vereist bij het lezen van gegevens uit een tabelbestand, aangezien ontbrekende waarden als lege tekenreeksen worden gedefinieerd in plaats van als NULL-waarden.

Het laden van de gegevens uit IntervalTable resulteert in de volgende tabel:

Voorbeeld tabel 1
Sleutel Eerste datum Team
000110 2011-01-21 Zuidwesten
000110 - Noordwesten
000120 - Noordwesten
000120 2013-03-05 Zuidwesten
000120 2013-03-05 Noordwesten
000120 2013-01-06 Zuidwesten

Door de nullasvalue-opdracht kunnen NULL-waarden aan de genoemde velden worden toegewezen.

Maak Key, FirstDate, LastDate, (kenmerkvelden) met behulp van previous en order by, waarna IntervalTable wordt verwijderd en vervangen door deze sleuteltabel.

Het laden van de gegevens uit Transact resulteert in de volgende tabel:

Voorbeeld tabel 2
Sleutel Naam Datum Verkoop
000110 Spengler Aaron 2009-08-18 100
000110 Spengler Aaron 2009-12-25 200
000110 Spengler Aaron 2011-02-03 300
000110 Spengler Aaron 2011-05-05 400
000120 Ballard John 2011-06-04 500
000120 Ballard John 2013-01-20 600
000120 Ballard John 2013-03-10 700
000120 Ballard John 2013-03-13 800
000120 Ballard John 2013-09-21 900

De intervalmatch-opdracht voorafgegaan door inner join vervangt de bovenstaande sleutel door een synthetische sleutel die met de tabel Transact is gekoppeld en de volgende tabel oplevert:

Voorbeeld tabel 3
Sleutel Team Naam Eerste datum Laatste datum Datum Verkoop
000110 Noordwesten Spengler Aaron - 2011-01-20 2009-08-18 100
000110 Noordwesten Spengler Aaron - 2011-01-20 2009-12-25 200
000110 Zuidwesten Spengler Aaron 2011-01-21 - 2011-02-03 300
000110 Zuidwesten Spengler Aaron 2011-01-21 - 2011-05-05 400
000120 Noordwesten Ballard John - 2013-01-05 2011-06-04 500
000120 Zuidwesten Ballard John 2013-01-06 2013-03-04 2013-01-20 600
000120 Zuidwesten Ballard John 2013-03-05 - 2013-03-10 700
000120 Zuidwesten Ballard John 2013-03-05 - 2013-03-13 800
000120 Zuidwesten Ballard John 2013-03-05 - 2013-09-21 900

Was deze pagina nuttig?

Als u problemen ervaart op deze pagina of de inhoud onjuist is – een typfout, een ontbrekende stap of een technische fout – laat het ons weten zodat we dit kunnen verbeteren!

Neem deel aan het Analytics Modernization Program

Remove banner from view

Moderniseer zonder uw waardevolle QlikView-apps op het spel te zetten met het Analytics Modernization Program. Klik hier voor meer informatie of om contact op te nemen: ampquestions@qlik.com