Vai al contenuto principale Passa a contenuto complementare

Corrispondenza degli intervalli con i dati discreti

Il prefisso intervalmatch in un'istruzione LOAD o SELECT viene utilizzato per collegare valori numerici discreti a uno o più intervalli numerici. Si tratta di una funzione molto avanzata che può essere utilizzata, ad esempio, negli ambienti di produzione.

Esempio di Intervalmatch

Osservare le due tabelle seguenti. La prima tabella mostra l'inizio e la fine della produzione di ordini differenti. La seconda tabella mostra alcuni eventi discreti. Come è possibile associare gli eventi discreti agli ordini, affinché si sappia, ad esempio, quali ordini sono interessati dalle interruzioni e quali sono stati elaborati da determinati turni?

Tabella OrderLog
AvviaFineOrdinamento
01:0003:35Una
02:3007:58B
03:0410:27Scrivere
07:2311:43D
Tabella EventLog
OraEventoCommento
00:000Inizio turno 1
01:181Arresto linea
02:232Riavvio linea 50%
04:153Velocità linea 100%
08:004Inizio turno 2
11:435Fine produzione

È innanzitutto necessario caricare le due tabelle, quindi collegare il campo Time agli intervalli definiti dai campi Start e End:

SELECT * from OrderLog;

SELECT * from EventLog;

Intervalmatch (Time) SELECT Start,End from OrderLog;

In Qlik Sense è ora possibile creare una casella della tabella come illustrato di seguito:

Tabella con il campo Ora collegato agli intervalli definiti da Inizio e Fine
OraEventoCommentoOrdinamentoAvviaFine
0:000Inizio turno 1---
1:181Arresto lineaUna1:003:35
2:232Riavvio linea 50%Una1:003:35
4:153Velocità linea 100%B2:307:58
4:153Velocità linea 100% Scrivere3:0410:....
8:004Inizio turno 2Scrivere3:0410:....
8:004Inizio turno 2D7:2311:....
11:435Fine produzioneE7:2311:.....

È ora possibile osservare come sia l'ordine A a essere interessato principalmente dall'interruzione della linea, condizione che ha ridotto la velocità della stessa esercitando un impatto anche sugli ordini B e C. Solo gli ordini C e D sono stati parzialmente gestiti da Shift 2.

Quando si utilizza l'istruzione intervalmatch, tenere presente quanto segue:

  • Prima dell'istruzione intervalmatch il campo contenente i punti di dati discreti (Time nell'esempio riportato sopra) deve essere già stato letto in Qlik Sense. L'istruzione intervalmatch non legge questo campo dalla tabella del database.
  • La tabella letta nelle istruzioni intervalmatch LOAD o SELECT deve sempre contenere esattamente due campi (Start e End nell'esempio precedente). Per stabilire un collegamento con altri campi, è necessario leggere i campi di intervallo insieme ai campi aggiuntivi in un'istruzione LOAD o SELECT separata (la prima istruzione SELECT nell'esempio precedente).
  • Gli intervalli sono sempre chiusi, vale a dire che i punti di fine sono inclusi nell'intervallo. I limiti non numerici fanno in modo che l'intervallo venga ignorato (non definito), mentre i limiti NULL estendono l'intervallo in modo indefinito (illimitato).
  • Gli intervalli possono sovrapporsi e i valori discreti saranno collegati a tutti gli intervalli corrispondenti.

Uso della sintassi intervalmatch estesa per risolvere i problemi di rallentamento nella modifica delle dimensioni

La sintassi intervalmatch estesa può essere utilizzata per gestire il noto problema della lentezza nella modifica delle dimensioni dei dati sorgente.

Script di esempio:

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;

L'istruzione nullinterpret è necessaria solo quando si leggono i dati da un file tabella, perché i valori mancanti sono definiti come stringhe vuote, anziché come valori NULL.

Il caricamento dei dati da IntervalTable restituisce come risultato la seguente tabella:

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

L'istruzione nullasvalue consente valori NULL per mappare i campi elencati.

Creare Key, FirstDate e LastDate (campi di attributo) utilizzando previous and order by, quindi IntervalTable verrà eliminato essendo stato sostituito da questa tabella chiave.

Il caricamento dei dati da Transact restituisce come risultato la seguente tabella:

Tabella con dati caricati da Transact
ChiaveNomeDataVendite
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

L'istruzione intervalmatch preceduta da inner join sostituisce la chiave precedente con una chiave sintetica che collega la tabella Transact, restituendo la seguente tabella:

Tabella con l'istruzione intervalmatch preceduta da inner join
ChiaveTeamNomeFirstDateLastDateDataVendite
000110NorthwestSpengler Aaron-2011-01-202009-08-18100
000110NorthwestSpengler Aaron-2011-01-202009-12-25200
000110SouthwestSpengler Aaron2011-01-21 2011-02-03300
000110SouthwestSpengler Aaron2011-01-21 2011-05-05400
000120NorthwestBallard John 2013-01-052011-06-04500
000120SouthwestBallard John2013-01-062013-03-042013-01-20600
000120SouthwestBallard John2013-03-05 2013-03-10700
000120SouthwestBallard John2013-03-05 2013-03-13800
000120SouthwestBallard John2013-03-05 2013-09-21900

Hai trovato utile questa pagina?

Se riscontri problemi con questa pagina o con il suo contenuto – un errore di battitura, un passaggio mancante o un errore tecnico – ti pregiamo di farcelo sapere!