Zu Hauptinhalt springen Zu ergänzendem Inhalt springen

Einordnung diskreter Werte in Intervalle

Der intervalmatch-Zusatz eines LOAD- oder SELECT-Befehls wird verwendet, um diskrete numerische Werte mit einem oder mehreren numerischen Intervallen zu verknüpfen. Diese leistungsfähige Funktion kann beispielsweise in Produktionsprozessen verwendet werden.

Intervalmatch-Beispiel

Bitte betrachten Sie die zwei nachstehenden Tabellen. Die erste Tabelle zeigt Bearbeitungsstart und -ende verschiedener Aufträge. Die zweite Tabelle enthält punktuelle Ereignisse. Wie lässt sich nun ein Zusammenhang zwischen den Tabellen herstellen, in dem Sinn, dass erkennbar wird, welche Aufträge von welchen Ereignissen betroffen waren?

Tabelle „OrderLog“
StartenEndeReihenfolge
01:0003:35A
02:3007:58 B
03:0410:27N
07:2311:43D
Tabelle „EventLog“
UhrzeitEreignisKommentar
00:000Beginn von Schicht 1
01:181Bandstopp
02:232Wiederanlauf des Bands 50 %
04:153Bandgeschwindigkeit 100 %
08:004Beginn von Schicht 2
11:435Produktionsende

Zunächst werden die beiden Tabellen wie üblich geladen, dann wird das Feld Time mit den Intervallen verknüpft, die in den Feldern Start und End definiert sind:

SELECT * from OrderLog;

SELECT * from EventLog;

Intervalmatch (Time) SELECT Start,End from OrderLog;

Sie können jetzt wie folgt eine Tabelle in Qlik Sense erstellen:

Tabelle mit dem Feld „Timer“, verknüpft mit den durch „Start“ und „End“ definierten Intervallen
UhrzeitEreignisKommentarReihenfolgeStartenEnde
0:000Beginn von Schicht 1---
1:181BandstoppA1:003:35
2:232Wiederanlauf des Bands 50 %A1:003:35
4:153Bandgeschwindigkeit 100 % B2:307:58
4:153Bandgeschwindigkeit 100 % N3:0410:....
8:004Beginn von Schicht 2N3:0410:....
8:004Beginn von Schicht 2D7:2311:....
11:435ProduktionsendeE7:2311:.....

Jetzt ist offensichtlich, dass hauptsächlich Auftrag A vom Stopp der Produktionslinie betroffen war. Auftrag B und C wurden ebenfalls durch die verminderte Geschwindigkeit der Produktionslinie beeinträchtigt. Nur die Aufträge C und D wurden teilweise von Shift 2 bearbeitet.

Bei der Verwendung von intervalmatch beachten Sie Folgendes:

  • Vor dem Befehl intervalmatch muss das Feld mit den diskreten Datenpunkten (Time im obigen Beispiel) bereits in Qlik Sense eingelesen worden sein. Dieses Feld wird nicht durch den Befehl intervalmatch aus der Datenbanktabelle eingelesen.
  • Die Tabelle, die durch den Befehl intervalmatch LOAD oder SELECT geladen wird, muss immer genau zwei Felder enthalten (Start und End im obigen Beispiel). Um Verknüpfungen mit anderen Feldern zu ermöglichen, müssen die Intervallfelder zusammen mit anderen Feldern in einem separaten Befehl LOAD oder SELECT geladen werden (dem ersten Befehl SELECT im obigen Beispiel).
  • Die Intervalle sind immer abgeschlossen. Das heißt, dass die Grenzwerte in den Intervallen enthalten sind. Nicht-numerische Werte als Intervallgrenzen führen dazu, dass das Intervall nicht berücksichtigt wird (undefiniert). Bei NULL-Werten als Intervallgrenzen ist das Intervall unbegrenzt (unendlich groß).
  • Wenn sich die Intervalle überschneiden, werden die Werte jedem passenden Intervall zugeordnet.

Behebung von Problemen mit sich langsam verändernden Dimensionen mit der erweiterten Syntax von intervalmatch

Die erweiterte Syntax des Befehls intervalmatch dient dazu, ein häufig vorkommendes Problem zu lösen: sich langsam verändernde Dimensionen in den Datenquellen.

Beispiel:

SET NullInterpret='';

 

IntervalTable:

LOAD Key, ValidFrom, Team

FROM 'lib://dataqv/intervalmatch.xlsx' (ooxml, embedded labels, table is IntervalTable);

 

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 'lib://dataqv/intervalmatch.xlsx' (ooxml, embedded labels, table is Transact);

 

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

Der Befehl nullinterpret wird nur benötigt, wenn die Daten aus einer Tabellendatei eingelesen werden, denn dort sind fehlende Werte als leere Strings statt als NULL-Werte definiert.

Das Laden der Daten aus IntervalTable liefert folgende Tabelle:

Table with data loaded from IntervalTable
KeyFirstDateTeam
0001102011-01-21Southwest
000110-Northwest
000120-Northwest
0001202013-03-05Southwest
0001202013-03-05Northwest
0001202013-03-05Southwest

Der Befehl nullasvalue erlaubt das Zuordnen von NULL-Werten zu den aufgelisteten Feldern.

Erstellen Sie die Attributfelder Key, FirstDate und LastDate mithilfe der Befehle previous und order by. Danach wird die IntervalTable gelöscht, da sie durch diese Schlüsseltabelle ersetzt wurde.

Das Laden der Daten aus Transact liefert folgende Tabelle:

Tabelle mit Daten, die aus Transact geladen wurden
SchlüsselNameDatumUmsatz
000110Spengler Aaron2009-08-18100
000110Spengler Aaron2009-12-25200
000110Spengler Aaron2011-02-03300
000110Spengler Aaron2011-05-05400
000120Ballard John2011-06-04500
000120Ballard John2013-01-20600
000120Ballard John2013-03-10700
000120Ballard John2013-03-13800
000120Ballard John2013-09-21900

Durch den Befehl intervalmatch mit dem vorausgehenden Zusatz inner join wird der obige Schlüssel durch einen synthetischen Schlüssel ersetzt, der eine Verbindung mit der Tabelle Transact herstellt. Damit ergibt sich folgende Tabelle:

Tabelle mit dem Befehl intervalmatch, der der inner join vorangestellt ist
SchlüsselTeamNameFirstDateLastDateDatumUmsatz
000110NordwestenSpengler Aaron-2011-01-202009-08-18100
000110NordwestenSpengler Aaron-2011-01-202009-12-25200
000110SüdwestenSpengler Aaron2011-01-21 2011-02-03300
000110SüdwestenSpengler Aaron2011-01-21 2011-05-05400
000120NordwestenBallard John 2013-01-052011-06-04500
000120SüdwestenBallard John2013-01-062013-03-042013-01-20600
000120SüdwestenBallard John2013-03-05 2013-03-10700
000120SüdwestenBallard John2013-03-05 2013-03-13800
000120SüdwestenBallard John2013-03-05 2013-09-21900

Hat diese Seite Ihnen geholfen?

Wenn Sie ein Problem mit dieser Seite oder ihrem Inhalt feststellen, sei es ein Tippfehler, ein ausgelassener Schritt oder ein technischer Fehler, informieren Sie uns bitte!