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 funzionalità molto avanzata che può essere utilizzata, ad esempio, negli ambienti di produzione, come mostrato nell'esempio seguente.

Esempio:  

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 stati interessati dalle interruzioni e quali sono stati elaborati da determinati turni?

OrderLog tabella
Inizio End Ordine
01:00 03:35 A
02:30 07:58 B
03:04 10:27 C
07:23 11:43 D

 

EventLog tabella
Ora Evento Commento
00:00 0 Inizio del turno 1
01:18 1 Arresto linea
02:23 2 Riavvio linea al 50%
04:15 3 Velocità linea al 100%
08:00 4 Inizio del turno 2
11:43 5 Fine della 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 licenza è ora possibile creare una casella della tabella come illustrato di seguito:

A table in QlikView combining the above tables.

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

Quando si utilizza l'istruzioneintervalmatch, tenere presente i punti seguenti:

  • Prima dell'istruzione intervalmatch il campo contenente i punti di dati discreti (Time nell'esempio riportato sopra) deve essere già stato letto in licenza. 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 ed 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, ossia, 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 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;

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:

Tabella esempio 1
Tasto FirstDate Team
000110 2011-01-21 Sudovest
000110 - Nordovest
000120 - Nordovest
000120 2013-03-05 Sudovest
000120 2013-03-05 Nordovest
000120 2013-01-06 Sudovest

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

Creare Key, FirstDate, LastDate, (campi di attributo) utilizzando previous e 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 di esempio 2
Tasto Nome Data Sales
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

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 di esempio 3
Tasto Team Nome FirstDate LastDate Data Sales
000110 Nordovest Spengler Aaron - 2011-01-20 2009-08-18 100
000110 Nordovest Spengler Aaron - 2011-01-20 2009-12-25 200
000110 Sudovest Spengler Aaron 2011-01-21 - 2011-02-03 300
000110 Sudovest Spengler Aaron 2011-01-21 - 2011-05-05 400
000120 Nordovest Ballard John - 2013-01-05 2011-06-04 500
000120 Sudovest Ballard John 2013-01-06 2013-03-04 2013-01-20 600
000120 Sudovest Ballard John 2013-03-05 - 2013-03-10 700
000120 Sudovest Ballard John 2013-03-05 - 2013-03-13 800
000120 Sudovest Ballard John 2013-03-05 - 2013-09-21 900

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 – facci sapere come possiamo migliorare!

Partecipa al programma Analytics Modernization

Remove banner from view

Modernizza senza compromettere le tue preziose app QlikView con il programma Analytics Modernization. Fare clic qui per maggiori informazioni o per contattarci: ampquestions@qlik.com